Submission #91928

#TimeUsernameProblemLanguageResultExecution timeMemory
91928Bodo171Candies (JOI18_candies)C++14
100 / 100
134 ms10208 KiB
#include <iostream> #include <fstream> #include <queue> #include <climits> using namespace std; const int nmax=200005; const long long inf=1LL*100000*100000*100000*10; 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]=-inf; v1=v[st]; l[poz]=l[st]; r[l[poz]]=poz; v[st]=-inf; v2=v[dr]; r[poz]=r[dr]; l[r[poz]]=poz; v[dr]=-inf; ans+=val; if(st&&dr<=n) { v[poz]=v1+v2-val; v[poz]=max(v[poz],-inf); pq.push({v[poz],poz}); } cout<<ans<<'\n'; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...