社区讨论
stl求调
P1110[ZJOI2007] 报表统计参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mdclxwui
- 此快照首次捕获于
- 2025/07/21 12:30 8 个月前
- 此快照最后确认于
- 2025/11/04 04:01 4 个月前
只A了#1
CPP#include <bits/stdc++.h>
using namespace std;
#define int long long
const int M=5e5+5;
int n,m,ans2=1e9;
int a[M],a1[M];
multiset<int> p,s;
signed main()
{
// freopen("P1110_2.in","r",stdin);
// freopen("P1110.out","w",stdout);
scanf("%lld%lld",&n,&m);
a[0]=-2e9;a[n+1]=-2e9;
p.insert(-2e9);p.insert(2e9);
for(int i=1,x;i<=n;++i)
{
scanf("%lld",&x);a1[i]=a[i]=x;p.insert(x);
s.insert(abs(x-a[i-1]));
ans2=min(ans2,min(abs(x-*p.upper_bound(x)),abs(x-*--p.lower_bound(x))));
}
while(m--)
{
string op;
cin>>op;
if(op[0]=='I')
{
int i,k;
scanf("%lld%lld",&i,&k);
s.erase(s.find(abs(a1[i]-a[i+1])));s.insert(abs(a1[i]-k));s.insert(abs(k-a[i+1]));
a1[i]=k;p.insert(k);
ans2=min(ans2,min(abs(k-*p.upper_bound(k)),abs(k-*--p.lower_bound(k))));
}
else if(op[4]=='G') printf("%lld\n",*s.begin());
else printf("%lld\n",ans2);
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...