Submission #670961

#TimeUsernameProblemLanguageResultExecution timeMemory
670961a_aguiloBalloons (CEOI11_bal)C++14
0 / 100
2056 ms16056 KiB
#include<bits/stdc++.h> using namespace std; typedef vector<int> vi; typedef vector<vi> vvi; typedef pair<int, int> pii; typedef vector<pii> vpii; int n; long double radius(int d, long double r){ return (long double)(d*d)/(4*r); } int main(){ cin >> n; vector<pair<int, long double>> MyStack; //Mystack[i] = {position, radius} vector<long double> answers(n); vi position(n); vi limit(n); for(int i = 0; i < n; ++i) cin >> position[i] >> limit[i]; answers[0] = limit[0]; MyStack.push_back({position[0], (long double)limit[0]}); for(int i = 1; i < n; ++i){ int it = MyStack.size()-2; while(it >= 0 and (radius(position[i]-MyStack[it].first, MyStack[it].second) < radius(position[i]-MyStack[it+1].first, MyStack[it+1].second)) and ((long double)limit[i] > radius(position[i]-MyStack[it+1].first, MyStack[it+1].second) ) ){ MyStack.pop_back(); it--; } long double rad = min((long double)limit[i], radius(position[i]-MyStack[MyStack.size()-1].first, MyStack[MyStack.size()-1].second) ); MyStack.push_back({position[i], rad}); answers[i] = rad; } cout << fixed << setprecision(3); for (long double ans: answers) cout << ans << 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...