| 比赛 |
2026.9.5 |
评测结果 |
AAAAAAAAAAAAAAA |
| 题目名称 |
Pretty Pens |
最终得分 |
100 |
| 用户昵称 |
郑霁桓 |
运行时间 |
5.543 s |
| 代码语言 |
C++ |
内存使用 |
28.49 MiB |
| 提交时间 |
2026-09-05 12:56:32 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
long long n,m,q,as,x,y,z,a[200005],b[200005];
multiset<long long>st[200005],mx,nn;
int main(){
freopen("Pens.in","r",stdin);
freopen("Pens.out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n>>m>>q;
for(int i=1;i<=n;i++){
cin>>a[i]>>b[i];
st[a[i]].insert(b[i]);
}
for(int i=1;i<=m;i++){
auto it=--st[i].end();
x=*it;
as+=x;
mx.insert(x);
while(it!=st[i].begin()){
it--;
nn.insert(*it);
}
}
if(!nn.empty()) cout<<as+max(0ll,*(--nn.end())-*mx.begin())<<"\n";
else cout<<as<<"\n";
for(int qq=1;qq<=q;qq++){
cin>>x>>y>>z;
if(x==1){
if(a[y]==z) continue;
if(*(--st[a[y]].end())==b[y]){
as-=b[y];
mx.erase(mx.find(b[y]));
st[a[y]].erase(st[a[y]].find(b[y]));
int p=*(--st[a[y]].end());
as+=p;
nn.erase(nn.find(p));
mx.insert(p);
}else{
nn.erase(nn.find(b[y]));
st[a[y]].erase(st[a[y]].find(b[y]));
}
a[y]=z;
if(*(--st[z].end())<b[y]){
int p=*(--st[z].end());
as+=b[y]-p;
mx.erase(mx.find(p));
nn.insert(p);
mx.insert(b[y]);
}else nn.insert(b[y]);
st[a[y]].insert(b[y]);
}else{
if(*(--st[a[y]].end())==b[y]){
if(st[a[y]].size()==1){
as+=z-b[y];
mx.erase(mx.find(b[y]));
mx.insert(z);
}else{
auto it=--st[a[y]].end();
--it;
if(*it>z){
as+=(*it)-b[y];
mx.erase(mx.find(b[y]));
mx.insert(*it);
nn.erase(nn.find(*it));
nn.insert(z);
}else{
as+=z-b[y];
mx.erase(mx.find(b[y]));
mx.insert(z);
}
}
}else{
auto it=--st[a[y]].end();
if(*it>z){
nn.erase(nn.find(b[y]));
nn.insert(z);
}else{
as+=z-(*it);
mx.erase(mx.find(*it));
mx.insert(z);
nn.erase(nn.find(b[y]));
nn.insert(*it);
}
}
st[a[y]].erase(st[a[y]].find(b[y]));
b[y]=z;
st[a[y]].insert(z);
}
if(!nn.empty()) cout<<as+max(0ll,*(--nn.end())-*mx.begin())<<"\n";
else cout<<as<<"\n";
}
return 0;
}