Submission #124298

#TimeUsernameProblemLanguageResultExecution timeMemory
124298dolphingarlicLightning Conductor (POI11_pio)C++14
36 / 100
185 ms15992 KiB
#include <bits/stdc++.h> #pragma GCC Optimize("O3") #define FOR(i, x, y) for (ll i = x; i < y; i++) #define MOD 1000000007 typedef long long ll; using namespace std; ll h[500000], dp[500000]; double calc(ll k, ll i) { return h[k] + sqrt(abs(i - k)); } int main() { iostream::sync_with_stdio(false); cin.tie(0); ll n; cin >> n; FOR(i, 0, n) { cin >> h[i]; dp[i] = h[i]; } deque<ll> q; q.push_back(0); FOR(i, 1, n) { while (q.size() > 1 && calc(q[0], i) <= calc(q[1], i)) q.pop_front(); dp[i] = max(dp[i], (ll)ceil(calc(q[0], i))); while (q.size() > 1 && calc(q.back(), i) - calc(q[q.size() - 2], i) <= calc(i, i) - calc(q.back(), i)) q.pop_back(); q.push_back(i); } q.clear(); q.push_back(n - 1); for (ll i = n - 2; i >= 0; i--) { while (q.size() > 1 && calc(q[0], i) <= calc(q[1], i)) q.pop_front(); dp[i] = max(dp[i], (ll)ceil(calc(q[0], i))); while (q.size() > 1 && calc(q.back(), i + 1) - calc(q[q.size() - 2], i + 1) <= calc(i, i + 1) - calc(q.back(), i + 1)) q.pop_back(); q.push_back(i); } FOR(i, 0, n) cout << dp[i] - h[i] << '\n'; return 0; }

Compilation message (stderr)

pio.cpp:2:0: warning: ignoring #pragma GCC Optimize [-Wunknown-pragmas]
 #pragma GCC Optimize("O3")
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...