| 比赛 |
26暑假集训模拟赛3 |
评测结果 |
AAAAAAAEEEEEEEE |
| 题目名称 |
Election Queries |
最终得分 |
44 |
| 用户昵称 |
彭欣越 |
运行时间 |
1.556 s |
| 代码语言 |
C++ |
内存使用 |
3.55 MiB |
| 提交时间 |
2026-07-06 12:16:42 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=3010,inf=1e9;
int n,q,a[N],cnt[N];
ll getans () {
int m=0;
for (int i=1;i<=n;i++) m=max(m,cnt[i]);
ll mn[N],mx[N],smn[N],smx[N];
for (int i=1;i<=n+1;i++) {
mn[i]=smn[i]=inf;
mx[i]=smx[i]=-inf;
}
for (ll i=1;i<=n;i++) {
int w=cnt[i];
mn[w]=min(mn[w],i);
mx[w]=max(mx[w],i);
}
for (int w=n;w>=1;w--) {
smn[w]=min(smn[w+1],mn[w]);
smx[w]=max(smx[w+1],mx[w]);
}
ll ans=0;
for (int i=1;i<=m;i++) {
if (mn[i]==inf) continue;
int t=max(1,m-i);
ans=max(ans,smx[t]-mn[i]);
ans=max(ans,mx[i]-smn[t]);
}
return ans;
}
int main () {
freopen("Queries.in","r",stdin);
freopen("Queries.out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin >> n >> q;
for (int i=1;i<=n;i++) {
cin >> a[i];
cnt[a[i]]++;
}
while (q--) {
int x,y;
cin >> x >> y;
cnt[a[x]]--;
cnt[y]++;
a[x]=y;
cout << getans() <<endl;
}
return 0;
}