比赛 20120704 评测结果 AAAWWWWWWW
题目名称 椰子 最终得分 30
用户昵称 TBK 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2012-07-04 10:47:30
显示代码纯文本
#include <iostream> 
#include <cmath> 
#include <cstring> 
#include <string> 
#include <cstdio> 
#include <cstdlib> 
#include <iomanip> 
#include <set> 
#include <algorithm> 
#define MAXN 0x7fffffff 
using namespace std; 
int a[3001][1001][2],b,c,d,l,m,n,r[1001][2];
void gui(int x,int y,int z,int k)
{
	int i,j;
	if (z==1) 
	{
		a[y][z][0]=x;
		a[y][z][1]=k;
		r[x][0]=y;
		r[x][1]=z;
		return;
	}
	if (a[y][z-1][0]==0) gui(x,y,z-1,k);
	if ((a[y-1][z-1][0]!=0)&&(a[y+1][z-1][0]!=0)) 
	{
		a[y][z][0]=x;
		a[y][z][1]=k;
		r[x][0]=y;
		r[x][1]=z;
		return;
	}
		else if ((a[y-1][z-1][0]==0)&&(a[y+1][z-1][0]==0)) 
			{
				if (k>a[y][z-1][1]) 
				{
					i=a[y][z-1][0];
					j=a[y][z-1][1];
					a[y][z-1][0]=x;
					a[y][z-1][1]=k;
					r[x][0]=y;
					r[x][1]=z-1;
					gui(i,y+1,z-1,j);
				}
					else gui(x,y-1,z-1,k);
			}
				else 
				{
					if (a[y-1][z-1][0]==0)
					{
						if (k>a[y][z-1][1]) 
						{
							i=a[y][z-1][0];
							j=a[y][z-1][1];
							a[y][z-1][0]=x;
							a[y][z-1][1]=k;
							r[x][0]=y;
							r[x][1]=z-1;
							gui(i,y-1,z-1,j);
						}
							else gui(x,y-1,z-1,k);
					}
						else 
						{
							if (k>a[y][z-1][1]) 
							{
								i=a[y][z-1][0];
								j=a[y][z-1][1];
								a[y][z-1][0]=x;
								a[y][z-1][1]=k;
								r[x][0]=y;
								r[x][1]=z;
								gui(i,y+1,z-1,j);
							}
								else gui(x,y+1,z-1,k);
						}
				}
}
int main(void) 
{    
    freopen("coconuts.in","r",stdin); 
    freopen("coconuts.out","w",stdout); 
	scanf("%d",&b);
	for (c=0;c<b;c++)
	{
		scanf("%d",&d);
		memset(a,0,sizeof(a));
		memset(r,0,sizeof(r));
		for (l=1;l<=d;l++)
		{
			scanf("%d%d",&m,&n);
			m+=1000;
			int k;
			for (k=1;k<=1000;k++)
				if (a[m][k][0]==0) break;
			gui(l,m,k,n);
		}
		for (l=1;l<=d;l++) printf("%d %d\n",r[l][1],r[l][0]-1000);
		printf("\n");
	}
	fclose(stdin); 
    fclose(stdout); 
    return 0; 
}