| 比赛 |
2026.9.5 |
评测结果 |
AAAAAAAAAAAAAAA |
| 题目名称 |
Pretty Pens |
最终得分 |
100 |
| 用户昵称 |
djyqjy |
运行时间 |
4.219 s |
| 代码语言 |
C++ |
内存使用 |
24.71 MiB |
| 提交时间 |
2026-09-05 12:14:54 |
显示代码纯文本
#include<bits/stdc++.h>
#define int long long
#define pb push_back
#define fi first
#define se second
using namespace std;
void chkmax(int &a,int b){a=max(a,b);}
void chkmin(int &a,int b){a=min(a,b);}
inline int re()
{
char c=getchar();
int x=0,f=1;
while(c<'0'||c>'9'){if(c=='-') f=-1;c=getchar();}
while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
return x*f;
}
const int N=200010;
int n,m,q;
int col[N],p[N];
multiset<int> smax,semax;
multiset<int> s[N];
int summax;
void printans()
{
int cha=-*smax.begin();
if(!semax.empty())
{
auto it=semax.end();it--;
cha+=*it;
}
cha=max(summax,summax+cha);
printf("%lld\n",cha);
return;
}
signed main()
{
freopen("Pens.in","r",stdin);
freopen("Pens.out","w",stdout);
n=re();m=re();q=re();
for(int i=1;i<=n;i++)
{
col[i]=re();p[i]=re();
s[col[i]].insert(p[i]);
}
for(int i=1;i<=m;i++)
{
auto it=s[i].end();it--;
summax+=*it;smax.insert(*it);
if(s[i].size()>=2) it--,semax.insert(*it);
}
printans();
for(int i=1;i<=q;i++)
{
int op=re(),pos=re(),z=re();
if(op==1)
{
int c=col[pos];
{
auto it=s[c].end();it--;
summax-=*it;auto it2=smax.lower_bound(*it);smax.erase(it2);
if(s[c].size()>=2) it--,it2=semax.lower_bound(*it),semax.erase(it2);
}
auto it=s[c].lower_bound(p[pos]);s[c].erase(it);
{
it=s[c].end();it--;
summax+=*it;smax.insert(*it);
if(s[c].size()>=2) it--,semax.insert(*it);
}
c=col[pos]=z;
{
it=s[c].end();it--;
summax-=*it;auto it2=smax.lower_bound(*it);smax.erase(it2);
if(s[c].size()>=2) it--,it2=semax.lower_bound(*it),semax.erase(it2);
}
s[c].insert(p[pos]);
{
it=s[c].end();it--;
summax+=*it;smax.insert(*it);
if(s[c].size()>=2) it--,semax.insert(*it);
}
}
else if(op==2)
{
int c=col[pos];
{
auto it=s[c].end();it--;
summax-=*it;auto it2=smax.lower_bound(*it);smax.erase(it2);
if(s[c].size()>=2) it--,it2=semax.lower_bound(*it),semax.erase(it2);
}
auto it=s[c].lower_bound(p[pos]);s[c].erase(it);
p[pos]=z;
s[c].insert(p[pos]);
{
it=s[c].end();it--;
summax+=*it;smax.insert(*it);
if(s[c].size()>=2) it--,semax.insert(*it);
}
}
printans();
}
return 0;
}