Submission #949257

#TimeUsernameProblemLanguageResultExecution timeMemory
949257Sir_Ahmed_ImranHacker (BOI15_hac)C++17
100 / 100
216 ms31748 KiB
///~~~LOTA~~~/// #include <bits/stdc++.h> using namespace std; #define ll long long #define append push_back #define add insert #define nl "\n" #define ff first #define ss second #define pii pair<int,int> #define pll pair<long long,long long> #define all(x) (x).begin(),(x).end() #define L0TA ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL) #define N 500001 int n; int a[N]; int Add[N]; int REM[N]; map<int,int> Remov; int get(int l,int r){ if(l>r) return a[n]-a[l-1]+a[r]; return a[r]-a[l-1]; } void solve(){ int m,o; cin>>n; m=n/2; for(int i=o=1;i<=n;i++){ cin>>a[i]; a[i]+=a[i-1]; } for(int i=1;i<m;i++){ Add[i+1]=get(n-m+i+1,i); REM[n-m+i+1]=get(n-m+i+1,i); } Add[m+1]=get(1,m); priority_queue<int> Q; for(int i=m+1;i<=n;i++){ Q.push(get(i-m+1,i)); Add[i+1]=get(i-m+1,i); REM[i-m+1]=get(i-m+1,i); } for(int i=1;i<=n;i++){ Q.push(Add[i]); Remov[REM[i]]++; while(Remov[Q.top()]){ Remov[Q.top()]--; Q.pop(); } o=max(o,a[n]-Q.top()); } cout<<o; } int main(){ L0TA; solve(); 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...