Submission #590196

#TimeUsernameProblemLanguageResultExecution timeMemory
590196MinhhoBalloons (CEOI11_bal)C++17
10 / 100
260 ms9544 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]; priority_queue<ii, vector<ii>, less<ii>> st; 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 r[j] - minlen >= 0; } 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; for (int i=1; i<=n; i++) { cin>>x[i]>>r[i]; while (!st.empty() && !check(st.top().ss, i) && r[i] > ans[st.top().ss]) st.pop(); ans[i] = st.empty() ? (db)r[i] : cal(st.top().ss, i); st.emplace(ans[i], 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...