| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
why? why? why?这怎么会错呢,我从网上找了几个人的代码,和我的也没什么不同啊?
也不知道哪里错了,于是到处乱改,结果还是错的,朋友们,帮帮忙吧!
代码如下:
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
struct point
{
double a,b;
};
bool cmp(point x,point y)
{
if(abs(x.a-y.a)<1e-8) return x.b-y.b<0;
else return x.a-y.a<0;
}
int main()
{
int n,i,j,s[1001]; //s记录灯的位置
point st[1001];
int h;
for(j=1;scanf("%d %d",&n,&h)==2&&!(n==0&&h==0);j++)
{
int p=0;
if(h<=0) p=-1;
for(i=0;i<n;i++)
{
int x,y;
scanf("%d %d",&x,&y);
if(h<y) //别写反了
p=-1;
else
{
st[i].a=x-sqrt(h*h-y*y*1.0);
st[i].b=x+sqrt(h*h-y*y*1.0);
}
}
if(p!=-1)
{
sort(st,st+n,cmp);
s[p++]=st[n-1].a;
for(i=n-2;i>=0;i--)
{
if(s[p-1]-st[i].b>1e-8) //???
s[p++]=st[i].a;
}
}
printf("Case %d: %d\n",j,p);
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator