记录编号 39076 评测结果 AAAAAAAAAA
题目名称 椰子 最终得分 100
用户昵称 GravatarTBK 是否通过 通过
代码语言 C++ 运行时间 0.284 s
提交时间 2012-07-04 14:48:27 内存使用 23.24 MiB
显示代码纯文本
#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-1;
                                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; 
}