Submission #123574

#TimeUsernameProblemLanguageResultExecution timeMemory
123574MohamedAhmed04새로운 문제 (POI11_pio)C++14
72 / 100
376 ms4624 KiB
#include <bits/stdc++.h> #pragma GCC optimize ("O3") #pragma GCC optimization ("unroll-loops") using namespace std ; const int MAX = 3e5 + 5 ; int arr[MAX] , st[MAX][23] , lg[MAX] , pref[MAX] , suff[MAX]; int n ; /*void sparse_table() { lg[1] = 0 ; for(int i = 2 ; i < MAX ; ++i) lg[i] = lg[i / 2] + 1 ; for(int i = 0 ; i < n ; ++i) st[i][0] = arr[i] ; for(int j = 1 ; j <= lg[n] ; ++j) { for(int i = 0 ; i + (1 << j) <= n ; ++i) { st[i][j] = max(st[i][j-1] , st[i + (1 << (j-1))][j-1]) ; } } return ; } int RMQ(int l , int r) { int j = lg[r-l+1] ; return max(st[l][j] , st[r - (1 << j) + 1][j]) ; }*/ int readint() { char c = getchar() ; while(true) { if(c >= '0' && c <= '9') break ; c = getchar() ; } int x = (c - '0') ; c = getchar() ; while(true) { if(c < '0' || c > '9') break ; x = x * 10 + (c - '0') ; c = getchar() ; } return x ; } int main() { n = readint() ; for(int i = 0 ; i < n ; ++i) arr[i] = readint() ; for(int i = 0 ; i < n ; ++i) { for(int j = 1 ; j < n ; ++j) { if(i + (j-1) * (j-1) + 1 >= n) break ; pref[i + (j-1) * (j-1) + 1] = max(pref[i + (j-1) * (j-1) + 1] , arr[i] + j) ; } for(int j = 1 ; j < n ; ++j) { if(i - (j-1) * (j-1) - 1 < 0) break ; suff[i - (j-1) * (j-1) - 1] = max(suff[i - (j-1) * (j-1) - 1] , arr[i] + j) ; } } for(int i = 1 ; i < n ; ++i) pref[i] = max(pref[i] , pref[i-1]) ; for(int i = n-2 ; i >= 0 ; --i) suff[i] = max(suff[i] , suff[i+1]) ; for(int i = 0 ; i < n ; ++i) printf("%d\n" , max(0 , max(pref[i] , suff[i]) - arr[i])) ; return 0 ; }

Compilation message (stderr)

pio.cpp:3:0: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
 #pragma GCC optimization ("unroll-loops")
#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...