标签:
1328 poj
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 58386 | Accepted: 13155 |
Description
Input
Output
Sample Input
3 2 1 2 -3 1 2 1 1 2 0 2 0 0
Sample Output
Case 1: 2 Case 2: 1
Source
1 #include<stdio.h> 2 #include<string.h> 3 #include<algorithm> 4 #include<math.h> 5 using namespace std; 6 struct node{ 7 double x; 8 double y; 9 double l; 10 double r; 11 }island[1005]; 12 13 bool cmp(node a,node b) 14 { 15 if(a.r!=b.r) 16 return a.r<b.r; 17 else 18 return a.l>b.l; 19 } 20 21 int main() 22 { 23 int n,i,j,k,t=0,flg,num; 24 double d,local; 25 while(scanf("%d %lf",&n,&d)!=EOF) 26 { 27 flg=1;t++;num=1; 28 if(n==0 && d==0) 29 { 30 break; 31 } 32 for(i=1;i<=n;i++) 33 { 34 scanf("%lf %lf",&island[i].x,&island[i].y); 35 if(island[i].y>d) 36 flg=0; 37 } 38 if(flg==0) 39 { 40 printf("Case %d: -1\n",t); 41 continue; 42 } 43 for(i=1;i<=n;i++) 44 { 45 island[i].l=island[i].x-sqrt(d*d-island[i].y*island[i].y); 46 island[i].r=island[i].x+sqrt(d*d-island[i].y*island[i].y); 47 } 48 sort(island+1,island+n+1,cmp); 49 local=island[1].r; 50 for(i=2;i<=n;i++) 51 { 52 if(island[i].l<=local) 53 continue; 54 else 55 { 56 num++; 57 local=island[i].r; 58 } 59 } 60 printf("Case %d: %d\n",t,num); 61 } 62 return 0; 63 }
标签:
原文地址:http://www.cnblogs.com/cyd308/p/4444832.html