제출 #1185883

#제출 시각아이디문제언어결과실행 시간메모리
1185883matus192Balloons (CEOI11_bal)C++20
0 / 100
149 ms4764 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) { if (s.ss == -1) return limits[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; s.push({LMAX, -1LL}); // radius, x-coordinate REP(i, 0, n) { long double rad = limits[i]; rad = min(rad, maximum(s.top(), i)); while (rad >= s.top().ff) { s.pop(); rad = min(rad, maximum(s.top(), i)); } 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...