Submission #707222

#TimeUsernameProblemLanguageResultExecution timeMemory
707222therealpainBalloons (CEOI11_bal)C++17
100 / 100
201 ms10136 KiB
#include <bits/stdc++.h> #define fi first #define se second #define mp make_pair #define getbit(x, i) (((x) >> (i)) & 1) #define all(x) x.begin(), x.end() #define SQR(x) (x) * (x) #define TASK "" using namespace std; template <typename T1, typename T2> bool mini(T1 &a, T2 b) { if (a > b) {a = b; return true;} return false; } template <typename T1, typename T2> bool maxi(T1 &a, T2 b) { if (a < b) {a = b; return true;} return false; } const long long inf = 1e18; const int mod = 1e9 + 7; const int N = 2e5 + 7; stack <pair <double, double>> st; double x[N], r[N], ans[N]; int n; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n; auto calc_r = [&](const pair <double, double> &a, const double &bx) { return SQR(a.first - bx) / (4 * a.second); }; for (int i = 1; i <= n; ++i) { cin >> x[i] >> r[i]; double max_r = r[i]; while (st.size()) { pair <double, double> last = st.top(); double cur = calc_r(st.top(), x[i]); max_r = min(max_r, cur); if (max_r >= last.second) { st.pop(); continue; } else break; } st.emplace(x[i], max_r); ans[i] = max_r; } cout << fixed << setprecision(3); for (int i = 1; i <= n; ++i) cout << ans[i] << "\n"; }
#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...