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 }
英文题意不好理解,但是根据Input可以知道是根据一点画圆,这样就可以用while()循环解出