玄学WA
查看原帖
玄学WA
449550
Cheney_Z楼主2021/2/4 10:30

输入不是有多组数据嘛,每组数据一个输出,那不成立的情况,对于这组数据输出个-1就计算下一组数据,之前用break一直WA,改成return 0 就神奇AC了???(见代码注释处)

#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
const double inf = 0x3f3f3f3f;

int n,d;
struct hlt{
	int x,y;
	double l ,r;
	bool operator <(const hlt & x)const
	{
		return r < x.r;
	}
}q[1010];

void calc(int i,int a,int b){
	double len = sqrt(d * d - b * b);
	q[i].l = a - len;
	q[i].r = a + len;
	return;
}
int main(){
	ios::sync_with_stdio(false);
	while(1){
		cin >> n >> d;
		if(n == 0 && d == 0) break;
		
		for(int i=1;i<=n;++i){
			cin >> q[i].x >> q[i].y;
			if(d < q[i].y){
				cout << -1 << endl;
				return 0;//蒟蒻不明白...
			}
			calc(i,q[i].x,q[i].y);
		}
		sort(q+1,q+1+n);
		int cnt = 0;
		double pos = -inf;
		for(int i=1;i<=n;++i){
			if(q[i].l > pos) {
				cnt++;
				pos = q[i].r;
			}
			else continue;
		}
		cout << cnt << endl;
	}
	return 0;
}
2021/2/4 10:30
加载中...