社区讨论
求助!爆零了,哪错了?
P2234[HNOI2002] 营业额统计参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lo8m0ixq
- 此快照首次捕获于
- 2023/10/27 20:48 2 年前
- 此快照最后确认于
- 2023/10/27 20:48 2 年前
CPP
#include<bits/stdc++.h>
using namespace std;
const int N = 4e4 + 5, NN = 2e6 + 10;
int n, a[N], mi = 1e7, mx = -1, l, s, xb;
struct node
{
int pre, next, num;
}lb[NN];
int main()
{
cin >> n;
for(int i = 1; i <= n; i++)
{
cin >> a[i];
lb[a[i] += 1000005].num++;
mi = min(mi, a[i]);
mx = max(mx, a[i]);
}
xb = mi;
for(int i = mi + 1; i <= mx; i++)
{
if(lb[i].num == 0) continue;
lb[l].next = i;
lb[i].pre = xb;
xb = i;
}
for(int i = n; i >= 2; i--)
{
if(lb[a[i]].num > 1) lb[a[i]].num--;
else
{
int l = lb[a[i]].pre;
int r = lb[a[i]].next;
if(l == 0) s += r - a[i];
else if(r == 0) s += a[i]- l;
else s += min(a[i] - l, r - a[i]);
lb[l].next = r;
lb[r].pre = l;
}
}
cout << s << endl;
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...