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[复制]

2
1 3 4 2

样例输出1[复制]

1
2

样例2

样例输入2[复制]

1
10 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
",i/2+1);
19         else
20             printf("%d
",n-i/2+1);
21     }
22 }
原文地址:https://www.cnblogs.com/Aa1039510121/p/5857818.html