Waiting Waiting Waiting Waiting
查看原帖
Waiting Waiting Waiting Waiting
658786
STUDENT00楼主2022/8/30 13:39

Waiting Waiting Waiting Waiting

时间复杂度貌似没有问题?

#include<bits/stdc++.h>
using namespace std;
int n,d,x,y,t;
struct line{
	double s,e;
} ls[1010];
bool cmp(line a,line b){
	return a.s<b.s;
}
int main(){
	while(~scanf("%d%d",&n,&d)&&n&&d){
		t++;
		bool flag=1;
		for(int i=1;i<=n;i++){
			scanf("%d%d",&x,&y);
			if(y>d){
				flag=0;
				break;
			}
			double p=sqrt(d*d-y*y);
			ls[i].s=x-p;
			ls[i].e=x+p;
		}
		if(!flag){
			printf("Case %d: -1\n",t);
			continue;
		}
		sort(ls+1,ls+n+1,cmp);
		int cnt=0;
		double now=-1e9;
		for(int i=1;i<=n;i++){
			if(ls[i].s>now){
				cnt++;
				now=ls[i].e;
			}else if(ls[i].e<now) now=ls[i].e;
		}
		printf("Case %d: %d\n",t,cnt);
	}
	return 0;
}
2022/8/30 13:39
加载中...