| 比赛 |
2026.9.5 |
评测结果 |
AAAAAAAAAAAAAAA |
| 题目名称 |
Pretty Pens |
最终得分 |
100 |
| 用户昵称 |
2_16鸡扒拌面 |
运行时间 |
4.971 s |
| 代码语言 |
C++ |
内存使用 |
23.48 MiB |
| 提交时间 |
2026-09-05 12:15:25 |
显示代码纯文本
#include<bits/stdc++.h>
#pragma GCC optimize("O3")
#define ll long long
#define SNSNMO 200010
using namespace std;
int n,m,q,col[SNSNMO],val[SNSNMO];
struct node{
int id,w;
};
struct cmp{
bool operator()(const node& a,const node& b) const
{
if(a.w!=b.w) return a.w>b.w;
return a.id<b.id;
}
};
multiset<node,cmp> st[SNSNMO], mx, sec;
ll ans=0;
void erasec(int c)
{
auto it=mx.lower_bound(*st[c].begin());
ans-=st[c].begin()->w;
mx.erase(it);
if(st[c].size()>1)
{
it=sec.lower_bound(*next(st[c].begin()));
sec.erase(it);
}
}
void insertc(int c)
{
ans+=st[c].begin()->w;
mx.insert(*st[c].begin());
if(st[c].size()>1) sec.insert(*next(st[c].begin()));
}
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>>col[i]>>val[i];
st[col[i]].insert({i,val[i]});
}
for(int i=1;i<=m;++i) insertc(i);
if(sec.size()>0)
{
if(sec.begin()->w>prev(mx.end())->w)
cout<<ans-prev(mx.end())->w+sec.begin()->w<<"\n";
else cout<<ans<<"\n";
}
else cout<<ans<<"\n";
while(q--)
{
int op,i,x;
cin>>op>>i>>x;
if(op==1)
{
auto pos=st[col[i]].lower_bound({i,val[i]});
erasec(col[i]);
erasec(x);
st[x].insert(*pos);
st[col[i]].erase(pos);
insertc(col[i]);
insertc(x);
col[i]=x;
}
if(op==2)
{
auto pos=st[col[i]].lower_bound({i,val[i]});
erasec(col[i]);
st[col[i]].insert({i,x});
st[col[i]].erase(pos);
insertc(col[i]);
val[i]=x;
}
if(sec.size()>0)
{
if(sec.begin()->w>prev(mx.end())->w)
cout<<ans-prev(mx.end())->w+sec.begin()->w<<"\n";
else cout<<ans<<"\n";
}
else cout<<ans<<"\n";
}
return 0;
}