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