Submission #1185886

#TimeUsernameProblemLanguageResultExecution timeMemory
1185886matus192Balloons (CEOI11_bal)C++20
10 / 100
145 ms5004 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> using namespace std; using namespace __gnu_pbds; typedef long long ll; typedef pair<int, int> pii; typedef pair<ll, ll> pll; typedef vector<int> vi; typedef vector<ll> vll; typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> oset; #define REP(i, a, b) for (ll i = (a); i < (b); i++) #define FOR(i, x) for (auto &i : x) #define ff first #define ss second #define pb push_back #define all(x) x.begin(), x.end() #define IMAX INT_MAX #define IMIN INT_MIN #define LMAX LONG_LONG_MAX #define LMIN LONG_LONG_MIN #define MOD 1000000007 #define SIR 1000000009 vll x_coords, limits; long double maximum(pll s, ll idx) { long double len = (x_coords[idx] - s.ss); long double men = 4*s.ff; return ((len)/(men))*len; } int main() { ll n; cin >> n; x_coords = vll(n); limits = vll(n); REP(i, 0, n) { cin >> x_coords[i] >> limits[i]; } stack<pll> s; REP(i, 0, n) { long double rad = limits[i]; if (!s.empty()) rad = min(rad, maximum(s.top(), i)); while (!s.empty() && rad >= s.top().ff) { s.pop(); if (!s.empty()) rad = min(rad, maximum(s.top(), i)); } cout << fixed << setprecision(3); cout << rad << '\n'; s.push({rad, x_coords[i]}); } 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...