比赛 ?板子大赛 评测结果 WWWWWW
题目名称 喷水装置 最终得分 0
用户昵称 小福鑫 运行时间 0.226 s
代码语言 C++ 内存使用 3.88 MiB
提交时间 2026-01-17 13:01:43
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int T,n,f,ans;
double l,w,x,r,q,p;
struct e{
	double l,r;
}a[1000001];
bool cmp(e x,e y){
    if(x.l==y.l){
        return x.r>y.r;
    }
    return x.l<y.l;
}
void init(){
    f=1;
    q=p=0;
    ans=1;
}
int main() {
	freopen("sprinkler.in","r",stdin);
	freopen("sprinkler.out","w",stdout);
	cin>>T;
	while(T--){
	    init();
	    cin>>n>>l>>w;
		w/=2.0;
		for(int i=1;i<=n;i++){
			cin>>x>>r;
			if(r*r-w*w<0)continue;
			a[i].l=x-sqrt(r*r-w*w);
			a[i].r=x+sqrt(r*r-w*w);
		}
		sort(a+1,a+n+1,cmp);
		for(int i=1;i<=n;i++){
			if(a[i].l<=q){
				p=max(p,a[i].r);
			}
            else{
				ans++;
				q=p;
				if(a[i].l>q){
				    f=0;
                }
				p=max(p,a[i].r);
			}
		}
		if(!f||p<l){
		    cout<<"-1"<<endl;
		}
        else{
            cout<<ans<<endl;
		}
	}
	return 0;
}