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...