POJ 3069 Saruman's Army

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <algorithm>
 4 #define sc(x) scanf("%d",&(x))
 5 #define sc2(x,y) scanf("%d%d", &(x), &(y))
 6 #define pf(x) printf("%d\n", x)
 7 #define FOR(i,b,e) for(int i=b; i<=e; i++)
 8 using namespace std;
 9 int troops[1000];
10 int main()
11 {
12     int R, n;
13     while(~sc2(R, n) && !(R==-1 && n==-1))
14     {
15         int s, Num = 0, k = 0;
16         FOR(i, 0, n-1)
17         sc(troops[i]);
18         sort(troops, troops+n);
19         while(k < n)
20         {
21             s = troops[k];
22             k++;
23             while(troops[k] <= s + R)
24                 k++;
25                 
26             s = troops[k-1];
27             while(troops[k] <= s + R)//再次判断是否右边的也满足 
28                 k++;
29                         
30             Num++;
31         }
32         pf(Num);
33     }
34     return 0;
35 }
View Code

英文题意不好理解,但是根据Input可以知道是根据一点画圆,这样就可以用while()循环解出

posted @ 2015-04-04 15:18  PastLIFE  阅读(126)  评论(0编辑  收藏  举报