玄关,求调
查看原帖
玄关,求调
772284
Justskr楼主2024/8/17 16:45

卡了好久了,如果有好心人救一救非常感谢

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define endl "\n"
double l,w;
ll n;
ll cnt;
typedef pair<double,double> p;
priority_queue<p,vector<p>,greater<p> > que;
int main(){
	//ios::sync_with_stdio(false);
	//cin.tie(0),cout.tie(0);
	while("我是死循环"){
		cnt = 0;
		double x,r;
		cin >> n >> l >> w;
		for(ll i = 1;i <= n;i++){
			cin >> x >> r;
			if(r*2 <= w){
				continue;
			}
			double L = x * 1.0 - sqrt(r * r * 1.0 - w * w * 1.0 / 4);
			double R = x * 1.0  + sqrt(r * r * 1.0 - w * w * 1.0 / 4);
			que.push(make_pair(L,R));
		}
		double temp = 0;
		bool o = 0;
		while(!que.empty()){
			double L = que.top().first;
			double R = que.top().second;
			//cout << L << " " << R << " " << temp << " ";
			que.pop();
			if(L > temp){
				break;
			}
			if(temp >= L && (!(que.top().first <= temp) || que.empty()) && R > temp){
				//cout << "Yeahhhh";
				cnt++;
				temp = R;
			}//cout << endl;
			if(temp >= l){
				
				cout << cnt << endl;
				o = 1;
				break;
			}
			
		}
		while(!que.empty()){
			que.pop();
		}
		if(!o){
			cout << -1<< endl;
		}
	}
	
	
	return 0;
}
2024/8/17 16:45
加载中...