# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
388904 | denkendoemeer | Candies (JOI18_candies) | C++14 | 135 ms | 10180 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define inf 1e16
int nex[200005],pre[200005];
ll v[200005];
priority_queue<pair<ll,int>>pq;
int main()
{
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
int n,i;
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%lld",&v[i]);
nex[i]=i+1;
pre[i]=i-1;
pq.push(make_pair(v[i],i));
}
nex[n]=0;
ll ans=0;
for(i=1;i<=(n+1)/2;i++){
while(pq.top().first!=v[pq.top().second])
pq.pop();
int x=pq.top().second,l=pre[x],r=nex[x];
ans+=v[x];
printf("%lld\n",ans);
pq.pop();
pre[nex[x]=nex[r]]=x;
nex[pre[x]=pre[l]]=x;
if (l && r)
v[x]=max((ll)-inf,v[l]+v[r]-v[x]);
else
v[x]=-inf;
v[l]=v[r]=-inf;
pq.push(make_pair(v[x],x));
}
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |