Submission #1159469

#TimeUsernameProblemLanguageResultExecution timeMemory
1159469KhoaDuyCandies (JOI18_candies)C++20
0 / 100
1 ms320 KiB
#include<bits/stdc++.h> using namespace std; #define endl '\n' signed main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int n; cin >> n; int a[n]; int limit=((n+1)>>1); for(int i=0;i<n;i++){ cin >> a[i]; } long long ans[limit+1]; ans[0]=0; priority_queue<pair<long long,int>> pq; long long cost[n]; int le[n],ri[n]; bool del[n]={false}; long long curr=0; for(int i=0;i<n;i++){ le[i]=i-1,ri[i]=i+1; cost[i]=a[i]; pq.push({cost[i],i}); } int k=1; while(k<=limit){ long long c=pq.top().first; int i=pq.top().second; pq.pop(); if(del[i]){ continue; } bool edge=false; if(le[i]==-1||ri[i]==n){ edge=true; } curr+=c; ans[k]=curr; k++,c=-c; int nxtle=-1,nxtri=n; if(le[i]!=-1){ c+=cost[le[i]]; del[le[i]]=true; if(le[le[i]]!=-1){ nxtle=le[le[i]]; ri[le[le[i]]]=i; } } if(ri[i]!=n){ c+=cost[ri[i]]; del[ri[i]]=true; if(ri[ri[i]]!=n){ nxtri=ri[ri[i]]; le[ri[ri[i]]]=i; } } cost[i]=c; le[i]=nxtle,ri[i]=nxtri; if(!edge){ pq.push({cost[i],i}); } } for(int i=1;i<=limit;i++){ cout << ans[i] << endl; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...