Submission #1016047

#TimeUsernameProblemLanguageResultExecution timeMemory
1016047ByeWorldBalloons (CEOI11_bal)C++14
50 / 100
2069 ms4800 KiB
#include <bits/stdc++.h> #pragma GCC optimize("O3", "unroll-loops") #define ll long long #define int long long #define pb push_back #define fi first #define se second #define lf (id<<1) #define rg ((id<<1)|1) #define md ((l+r)/2) #define ld long double using namespace std; typedef pair<int,int> pii; typedef pair<pii, int> ipii; const int MAXN = 2e5+10; const int MAXA = 1e6+10; const int INF = 1e9+10; // const int INF2 = 1e18+10; const int LOG = 19; const int MOD = 1e9+7; const int SQRT = 450; const vector<int> NOL = {}; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); const vector<int> dx = {1, -1, 0, 0}; const vector<int> dy = {0, 0, 1, -1}; void chmn(ld &a, ld b){ a = min(a, b); } void chmx(ld &a, ld b){ a = max(a, b); } int n; int x[MAXN], mx[MAXN]; ld r[MAXN]; ld dis(int j, int i){ return (ld)((x[j]-x[i])*(x[j]-x[i]) / (4*r[j])); } signed main(){ cin >> n; for(int i=1; i<=n; i++){ cin >> x[i] >> mx[i]; } vector <int> stac; stac.pb(1); r[1] = mx[1]; for(int i=2; i<=n; i++){ ld mn = (ld)mx[i]; if(stac.size() <= 2){ for(auto j : stac){ chmn(mn, dis(j, i)); } } else { while(stac.size()>=2 && dis(stac[stac.size()-2], i) < dis(stac.back(), i)) stac.pop_back(); // if(stac.size()==1) chmn(mn, dis(stac.back(), i)); // else { // chmn(mn, dis(stac.back(), i)); // chmn(mn, dis(stac[stac.size()-2], i)); // } int idx = -1; for(auto j : stac){ if(mn > dis(j, i)) idx = j; chmn(mn, dis(j, i)); } if(idx != -1){ while(stac.back() != idx) stac.pop_back(); } } r[i] = mn; stac.pb(i); } for(int i=1; i<=n; i++) cout << fixed << setprecision(3) << r[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...