| ||||||||||
| 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 | |||||||||
怎么还是狂WA啊,测试用例全过了还是不对啊,求大佬指点#include<iostream>
#include<cstdio>
#include<algorithm>
#include<math.h>
using namespace std;
struct ra
{
double p1;
double p2;
double x;
double y;
}a[1000];
int cmp(ra a, ra b)
{
return a.p1 < b.p1;//对小岛构成的圆与x轴的左交点进行从小到大的排序
}
int main()
{
int x, y;
int n, d;
int count = 0;
int ans = 1;
int flag = 0;
while (scanf_s("%d %d", &n, &d))
{
if (n == 0 && d == 0)
{
return 0;
}
for (int i = 0; i < n; i++)
{
cin >> x >> y;
a[i].x = x;
a[i].y = y;
a[i].p1 = x - sqrt((double)d * d - y * y);
a[i].p2 = x + sqrt((double)d * d - y * y);
}
sort(a, a + n - 1, cmp);
for (int i = 0; i < n; i++)
{
if (d<0 || a[i].y>d||n<0)
{
cout << "Case " << ++count << ":" <<-1<< endl;
flag = 1;
break;
}
}
if (flag == 1)
{
flag = 0;
continue;
}
double k = a[0].p2;
ans = 1;
for (int i = 1; i < n; i++)
{
if (a[i].p1 > k)
{
ans++;
k = a[i].p2;
}
else if (a[i].p2 < k)
{
k = a[i].p2;
}
}
cout << "Case " << ++count << ": " << ans << endl<<endl;
ans = 0;
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator