POJ 1328
时间:2011-03-14 来源:vSylar
判断不可行条件之后不可以直接跳出读取循环,否则会造成RUNTIME ERROR的错误!
不知道是不是sort的原因,运行时间较长
#include<iostream> #include<algorithm> #include<cmath> using namespace std; struct island { double r,l; }; bool cmp(island a,island b) { return a.l<b.l; } int main() { int n,r,k=0; double x,y; island p[1005]; while(cin>>n>>r &&(n||r)) { int err=0; int rr=r*r; for(int i=0; i<n; i++) { cin>>x>>y; if(fabs(y)>r) { err=1; //break; } p[i].l=x-sqrt(rr-y*y); p[i].r=x+sqrt(rr-y*y); } cout<<"Case "<<++k<<": "; if(err) { cout<<"-1"<<endl; continue; } sort(p,p+n,cmp); double now=p[0].r; int ans=1; for(int i=1; i<n; i++) { if(now>p[i].r) now=p[i].r; else if(now<p[i].l) { ans++; now=p[i].r; } } cout<<ans<<endl; } return 0; }
相关阅读 更多 +
排行榜 更多 +