Submission #31594

#TimeUsernameProblemLanguageResultExecution timeMemory
31594huynd2001Hacker (BOI15_hac)C++14
0 / 100
0 ms13732 KiB
/*huypheu 4 6 8 4 7 */ #include <bits/stdc++.h> #define int long long using namespace std; int a[500007]; int su[500007]; int sup[500007]; signed main() { int n; scanf("%lld",&n); for(int i=1;i<=n;i++) { scanf("%lld",&a[i]); } int la=(n/2)+(n%2!=0); for(int i=1;i<=n;i++) { su[i]=su[i-1]+a[i]; } for(int i=1;i<=n;i++) { if(i+la-1<=n) { sup[i]=su[i+la-1]-su[i-1]; } else { sup[i]=su[n]-su[i-1]+su[n-i+1]; } } // for(int i=1;i<=n;i++) cout << sup[i] << endl; for(int i=n+1;i<=2*n;i++) { sup[i]=sup[i-n]; } deque <int> que; for(int i=1;i<=la;i++) { while(!que.empty() && sup[que.back()]>=sup[i]) que.pop_back(); que.push_back(i); } // cout << la << endl; int ans=sup[que.front()]; // cout << la << " " << que.front() << endl; for(int i=la+1;i<=la+n-1;i++) { // int k=(i%n-n)%n+n; while(!que.empty() && que.front()<i-la+1) que.pop_front(); // cout << que.back() << endl; while(!que.empty() && sup[que.back()]>=sup[i]) que.pop_back(); que.push_back(i); // cout << i << " " << que.front() << endl; ans=max(ans,sup[que.front()]); } printf("%lld",ans); // int mi=0; // for(int i=2;i<=n-la+1;i++) // { // mi=max(mi,su[i+la-1]-su[i-1]); // } // printf("%lld",su[n]-mi); return 0; }

Compilation message (stderr)

hac.cpp: In function 'int main()':
hac.cpp:17:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%lld",&n);
                  ^
hac.cpp:20:22: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%lld",&a[i]);
                      ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...