记录编号 172449 评测结果 AAAAAAAAAA
题目名称 椰子 最终得分 100
用户昵称 GravatarChenyao2333 是否通过 通过
代码语言 C++ 运行时间 0.027 s
提交时间 2015-07-25 08:38:17 内存使用 0.82 MiB
显示代码纯文本
// Copyright Makazeu
// 抄代码仅用于学习交流,请于24小时内删除 

#include <cstdlib>
#include <cstdio>
#include <utility>
#include <cstring>
#include <string>
#include <algorithm>
using namespace std;
const int MAXH=55;
const int MAXL=1211;
const int SHIFT=55;
const int MAXN=1011;
typedef pair<int,int> Pair;
int T,N,map[MAXH][MAXL];
int wei[MAXN],pos[MAXN];
Pair pp[MAXN];
int val[MAXH][MAXL];

void iji(int num,int h,int l)
{
	if(map[h-1][l-1] && map[h-1][l+1])
	{
		pp[num].first=h,pp[num].second=l;
		map[h][l]=1; val[h][l]=num;return;
	}
	int tmp;
	if((!map[h-1][l-1]) &&(!map[h-1][l+1]))
	{
		if(wei[num]<wei[val[h-1][l]]) iji(num,h-1,l-1);
		else 
		{
			pp[num].first=h-1,pp[num].second=l;
			tmp=val[h-1][l]; val[h-1][l]=num;iji(tmp,h-1,l+1);
		}return;
	}
	int nxt;
	nxt=(map[h-1][l-1]==0?-1:1);
	if(wei[num]<wei[val[h-1][l]]) iji(num,h-1,l+nxt);
	else 
	{
		pp[num].first=h-1,pp[num].second=l;
		tmp=val[h-1][l]; val[h-1][l]=num;iji(tmp,h-1,l+nxt);
	} return;
}

int main()
{
	freopen("coconuts.in","r",stdin);
	freopen("coconuts.out","w",stdout);
	scanf("%d",&T); 
	for(int i=1;i<=T;i++)
	{
		scanf("%d\n",&N);
		memset(map,0,sizeof(map));
		memset(pp,0,sizeof(pp));
		memset(pos,0,sizeof(pos));
		memset(wei,0,sizeof(wei));
		memset(val,0,sizeof(val));
		for(int j=0;j<=1111;j++) map[0][j]=1;
		for(int j=1;j<=N;j++)
		{
			scanf("%d %d\n",&pos[j],&wei[j]);
			for(int k=1;k<=1000;k++)
			{
				if(map[k][pos[j]+SHIFT]==0)
				{
					iji(j,k,pos[j]+SHIFT);
					break;
				}
			}
		}
		for(int j=1;j<=N;j++) printf("%d %d\n",pp[j].first,pp[j].second-SHIFT);
		printf("\n");
	}
	return 0;
}