您的位置:首页 > 其它

uva 10382

2017-05-15 21:15 99 查看
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define eps  1e-9
using namespace std;
struct node
{
double L,R;
}Water[11000];
bool cmp(const struct node  &a,const struct node  &b)
{
return a.L<b.L;
}
int main()
{
int n;
double w,l;
while(~scanf("%d%lf%lf",&n,&l,&w))
{
int tot=0;
for(int i=1;i<=n;i++)
{
double m,r;
scanf("%lf%lf",&m,&r);
if((w/2-r)>eps)
continue;
Water[tot].L=m-sqrt(r*r-w*w/4);
Water[tot].R=m+sqrt(r*r-w*w/4);
tot++;
}
sort(Water,Water+tot,cmp);
double now=0;
int ans=0,flag=0;
int i,j;
for(i=0;i<tot;i=j)
{
if(Water[i].L>now)
break;
for(j=i+1;j<tot&&Water[j].L<=now;j++)
{
if(Water[j].R>Water[i].R)
i=j;
}
ans++;
now=Water[i].R;
if(now>=l)
{
break;
}
}
if(now>=l)
printf("%d\n",ans);
else
printf("-1\n");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  uva