Submission #91921

#TimeUsernameProblemLanguageResultExecution timeMemory
91921Bodo171Candies (JOI18_candies)C++14
0 / 100
3 ms504 KiB
#include <iostream> #include <fstream> #include <queue> #include <climits> using namespace std; const int nmax=200005; priority_queue< pair<long long,int> > pq; int n,i,j,poz,st,dr; long long val,ans,v1,v2; long long v[nmax]; int tt[nmax],rg[nmax],l[nmax],r[nmax]; int main() { //freopen("data.in","r",stdin); ios_base::sync_with_stdio(false); cin>>n; for(i=1;i<=n;i++) { cin>>v[i]; pq.push({v[i],i}); l[i]=i-1;r[i]=i+1; } int cnt=0; while((!pq.empty())&&cnt<(n+1)/2) { val=pq.top().first; poz=pq.top().second; pq.pop(); if(v[poz]!=val) continue; cnt+=1; st=l[poz];dr=r[poz]; v1=v2=0; v[poz]=LLONG_MIN; if(st) { v1=v[st]; l[poz]=l[st]; r[l[poz]]=poz; v[st]=LLONG_MIN; } if(dr<=n) { v2=v[dr]; r[poz]=r[dr]; l[r[poz]]=poz; v[dr]=LLONG_MIN; } ans+=val; v[poz]=v1+v2-val; pq.push({v[poz],poz}); cout<<ans<<'\n'; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...