首页 > 代码库 > P1290sk抓螃蟹

P1290sk抓螃蟹

背景

sk,zdq想在hzy生日之际送hzy几只螃蟹吃。。。

描述

现有n只螃蟹,每个在一个二维作标上,保证没有任何两个螃蟹重合。sk伸手抓螃蟹 了,他怕螃蟹的攻击,当他捉一只螃蟹时,其他螃蟹都朝这只运动(左边的向右,右边的向左,x作标相同的不动)。当然,螃蟹只会在x方向上横行,每秒一单位 长度。sk捉一只螃蟹一秒钟,当本秒末若某一只螃蟹与msk的手同x作标,sk的行动失败。问:怎样做才能抓完n只螃蟹?

格式

输入格式

输入
第一行:n。
第二行有2*n正整数,相邻两个用一空格分开,第2*i-1和第2*i个数表示编号为i的螃蟹的x,y作标。输入保证按先x后y的递增序排列。

输出格式

输出:
一共n行,每行一个螃蟹编号,表示sk取螃蟹的先后序列。如有多解,输出第一个编号最小的,如果第一个编号相同,输出第二个编号最大的,再相同,输出第三个编号最小的......

样例1

样例输入1[复制]

21 3 4 2

样例输出1[复制]

12

样例2

样例输入2[复制]

110 5

样例输出2[复制]

1

限制

每个测试点一秒

提示

hint
输入数据保证有解...
n<=5000.
0<=所有作标<=2^31-1
本题很简单 我后面才发现原来  一共n行,每行一个螃蟹编号,表示sk取螃蟹的先后序列。如有多解,输出第一个编号最小的,如果第一个编号相同,输出第二个编号最大的,再相同,输出第三个编号最小的......这才是题意 我服了

水题

 1 #include<iostream> 2 #include<cstdio> 3 typedef long long ll; 4 using namespace std; 5 struct node 6 { 7     int x,y; 8 }a[5005]; 9 int main()10 {11     int n,i;12     scanf("%d",&n);13     for(i=1;i<=n;i++)14         scanf("%d%d",&a[i].x,&a[i].y);15     for(i=1;i<=n;i++)16     {17         if(i%2!=0)18             printf("%d\n",i/2+1);19         else20             printf("%d\n",n-i/2+1);21     }22 }

 

P1290sk抓螃蟹