| 比赛 |
2026.9.5 |
评测结果 |
AAAAAAAAAAAAAAA |
| 题目名称 |
Pretty Pens |
最终得分 |
100 |
| 用户昵称 |
PXCZM |
运行时间 |
5.211 s |
| 代码语言 |
C++ |
内存使用 |
25.83 MiB |
| 提交时间 |
2026-09-05 11:46:07 |
显示代码纯文本
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int n,m,q;
int c[200010],p[200010];
multiset<int>st[200010],maxp,_maxp;
ll sum;
int Max[200010],_Max[200010];
void init()
{
for(int i=1;i<=n;i++)
st[c[i]].insert(p[i]);
for(int i=1;i<=m;i++)
{
int tmp=*st[i].rbegin();
maxp.insert(tmp);
sum+=tmp;
Max[i]=tmp;
if(st[i].size()!=1)
{
tmp=*next(st[i].rbegin());
_maxp.insert(tmp);
_Max[i]=tmp;
}
else _maxp.insert(0);
}
}
void calc()
{
ll ans=sum;
int v1=*_maxp.rbegin(),v2=*maxp.begin();
if(v1>v2) ans=ans-v2+v1;
cout<<ans<<'\n';
}
void update(int col)
{
int nmaxp=(st[col].size()?(*st[col].rbegin()):0);
if(nmaxp!=Max[col])
{
auto it=maxp.lower_bound(Max[col]);
maxp.erase(it);
sum-=Max[col];
Max[col]=nmaxp;
maxp.insert(Max[col]);
sum+=Max[col];
}
int _nmaxp=(st[col].size()>1?(*next(st[col].rbegin())):0);
if(_nmaxp!=_Max[col])
{
auto it=_maxp.lower_bound(_Max[col]);
_maxp.erase(it);
_Max[col]=_nmaxp;
_maxp.insert(_Max[col]);
}
}
void del(int col,int val)
{
auto it=st[col].lower_bound(val);
st[col].erase(it);
update(col);
}
void add(int col,int val)
{
st[col].insert(val);
update(col);
}
int main()
{
freopen("Pens.in","r",stdin);
freopen("Pens.out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(nullptr);cout.tie(nullptr);
cin>>n>>m>>q;
for(int i=1;i<=n;i++) cin>>c[i]>>p[i];
init();
calc();
while(q--)
{
int op,pos,x;
cin>>op>>pos>>x;
del(c[pos],p[pos]);
if(op==1) c[pos]=x;
else p[pos]=x;
add(c[pos],p[pos]);
calc();
}
return 0;
}