Submission #1255546

#TimeUsernameProblemLanguageResultExecution timeMemory
1255546chr34Balloons (CEOI11_bal)C++20
100 / 100
106 ms3548 KiB
#include <bits/stdc++.h>

using namespace std;

#define int long long
#define endl "\n"
#define dbg(x) cout << #x << " = " << (x) << endl;
const int INF = 1e18;
const int MAXN = 1e6 + 10;
const int MOD = 1e9 + 7;

double calc_r(pair<double, double> prev, double x){
	return (prev.first - x) * (prev.first - x) / (4 * prev.second);
}

int32_t main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	//freopen("input.in", "r", stdin);
	//freopen("input.out", "w", stdout);    
	int n; cin >> n;
	vector<double> ans(n);
	
	stack<pair<double, double>> s;
	for(int i = 0; i < n; ++i){
		double x, r; cin >> x >> r;
		double max_r = r;
		
		while(!s.empty()){
			pair<double, double> prev = s.top();
			double last_r = calc_r(prev, x);
			
			max_r = min(max_r, last_r);
			
			if(max_r >= prev.second){
				s.pop();
				continue;
			}
			else break;
		}
		
		s.push({x, max_r});
		
		ans[i] = max_r;
	}   
	
	cout<<fixed<<setprecision(3);
	for(double &r : ans) cout<<r<<endl;
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...