比赛 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;
}