Submission #590221

#TimeUsernameProblemLanguageResultExecution timeMemory
590221MinhhoBalloons (CEOI11_bal)C++17
10 / 100
196 ms8520 KiB
#define taskname "1" #include<bits/stdc++.h> #define db double #define ii pair<db, int> #define ff first #define ss second using namespace std; const int maxn = 2e5 + 10; const db eps = 1e-9; int n; db ans[maxn], x[maxn], r[maxn]; bool check(int i, int j) { db minlen = (ans[i] * ans[i] + ((x[j]-x[i]) * (x[j]-x[i]) / 4.0))/ans[i] - ans[i]; return min(r[j], minlen) >= ans[i]; } db cal(int i, int j) { db minlen = (ans[i] * ans[i] + ((x[j]-x[i]) * (x[j]-x[i]) / 4.0))/ans[i] - ans[i]; return min(r[j], minlen); } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); cin>>n; stack<int> st; for (int i=1; i<=n; i++) { cin>>x[i]>>r[i]; while (!st.empty() && check(st.top(), i)) st.pop(); ans[i] = st.empty() ? (db)r[i] : cal(st.top(), i); st.emplace(i); } for (int i=1; i<=n; i++) cout<<setprecision(3)<<fixed<<ans[i]<<"\n"; } /** 3 0 9 8 1 13 7 **/
#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...