背景
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取螃蟹的先后序列。如有多解,输出第一个编号最小的,如果第一个编号相同,输出第二个编号最大的,再相同,输出第三个编号最小的......
限制
每个测试点一秒
提示
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 ",i/2+1); 19 else 20 printf("%d ",n-i/2+1); 21 } 22 }