제출 #1330670

#제출 시각아이디문제언어결과실행 시간메모리
1330670boclobanchatCandies (JOI18_candies)C++20
100 / 100
313 ms25376 KiB
#include<bits/stdc++.h>
using namespace std;
const int MAXN=2e5+5;
const long long INF=-1e18;
set< pair<long long,int> > st;
set<int> pos;
long long A[MAXN];
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
    	cin>>A[i];
    	st.insert({A[i],i}),pos.insert(i);
	}
    pos.insert(0),pos.insert(n+1),A[0]=A[n+1]=INF;
    long long ans=0;
    for(int i=1;i<=(n+1)/2;i++)
    {
    	int p;
    	pair<long long,int> val=*prev(st.end());
    	ans+=val.first,p=val.second,st.erase(val);
    	auto res=pos.find(p);
    	int l=*(prev(res)),r=*(next(res));
    	if(l>=1) pos.erase(l),st.erase({A[l],l});
    	if(r<=n) pos.erase(r),st.erase({A[r],r});
    	st.insert({A[p]=-A[p]+A[l]+A[r],p});
    	cout<<ans<<"\n";
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...