求助 UVA1193
  • 板块学术版
  • 楼主清木
  • 当前回复7
  • 已保存回复7
  • 发布时间2023/8/12 11:07
  • 上次更新2023/11/3 04:19:30
查看原帖
求助 UVA1193
400148
清木楼主2023/8/12 11:07
#include<bits/stdc++.h>
using namespace std;
#define int long long
int read(){
	int s=0,w=1;
	char c=getchar();
	while(!isdigit(c)){
		if(c=='-') w=-1;
		c=getchar();
	}
	while(isdigit(c)){
		s=s*10+c-'0';
		c=getchar();
	}
	return s*w;
}
int n,ans;
double d,x,y,maxn;
bool f;
struct Node{
	double l,r;
}isl[1005];
bool cmp(Node x,Node y){
	if(x.l!=y.l){
		return x.l<y.l;
	}
	return x.r>y.r;
}
signed main(){
	while(1){
		ans=0;
		f=0;
		cin>>n>>d;
		if(n==0&&d==0) break;
		for(int i=1;i<=n;i++){
			cin>>x>>y;
			isl[i].l=x-sqrt(d*d-y*y);
			isl[i].r=x+sqrt(d*d-y*y); 
			if(y>d){
				f=1;
			}
		}
		if(f==1){
			puts("-1");
			continue;
		}
		sort(isl+1,isl+1+n,cmp);
		maxn=isl[1].r;
		ans++;
		for(int i=2;i<=n;i++){
			if(isl[i].l>maxn){
				maxn=isl[i].r;
				ans++;
			}
		}
		cout<<ans;
		puts("");
	}
	return 0;
}

在我们学校的oj对了一个点,其他显示输出超限

2023/8/12 11:07
加载中...