Submission #118144

#TimeUsernameProblemLanguageResultExecution timeMemory
118144popovicirobertLightning Conductor (POI11_pio)C++14
100 / 100
106 ms11180 KiB
#include <bits/stdc++.h> #define lsb(x) (x & (-x)) #define ll long long #define ull unsigned long long // 217 // 44 using namespace std; const int MAXN = (int) 5e5 + 5; int pref[MAXN + 1], suff[MAXN + 1]; int h[MAXN + 1], sq[1000]; int main() { //ifstream cin("B.in"); //ofstream cout("B.out"); int i, n; ios::sync_with_stdio(false); cin.tie(0), cout.tie(0); cin >> n; for(i = 1; i <= n; i++) { cin >> h[i]; } for(i = 1; i < 1000; i++) { sq[i] = i * i; } int mx = -1; for(int j = 1; j <= n; j++) { int pos; if(h[j] > mx) { pref[j] = max(pref[j], h[j]); for(i = 1; j + sq[i - 1] < n; i++) { pos = j + sq[i - 1] + 1; pref[pos] = max(pref[pos], h[j] + i); } } mx = max(mx, h[j]); } mx = -1; for(int j = n; j >= 1; j--) { int pos; if(mx < h[j]) { suff[j] = max(suff[j], h[j]); for(i = 1; j - sq[i - 1] - 1 >= 1; i++) { pos = j - sq[i - 1] - 1; suff[pos] = max(suff[pos], h[j] + i); } } mx = max(mx, h[j]); } for(i = n; i >= 1; i--) { suff[i] = max(suff[i + 1], suff[i]); } for(i = 1; i <= n; i++) { pref[i] = max(pref[i], pref[i - 1]); cout << max(pref[i], suff[i]) - h[i] << "\n"; } //cin.close(); //cout.close(); 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...
#Verdict Execution timeMemoryGrader output
Fetching results...