求助ABC的E,WA18
  • 板块学术版
  • 楼主wangshi
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/6/17 21:42
  • 上次更新2023/10/23 12:54:13
查看原帖
求助ABC的E,WA18
541553
wangshi楼主2023/6/17 21:42
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<cstring>
#include<set>
#define int long long
using namespace std;
const int N=5e5+10;
typedef pair<int,int> PII;
set<int> s;
int a[N],f[N];
signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	int n,k,q,ss=0,ans=0,minn=1e9;
	cin>>n>>k>>q;
	while(q--)
	{
		int x,y;
		cin>>x>>y;
		if(!f[x])
		{
			ss++;
			s.insert(y);
			if(ss<=k) 
			{
				ans+=y;
				minn=min(minn,y);
			}
			else
			{
				if(y>minn) 
				{
					ans=ans+y-minn;
					minn=*++s.lower_bound(minn);				
				}
			}
			a[x]=y;f[x]=1;
		}
		else
		{
			s.insert(y);
			if(ss<=k) 
			{
				ans=ans+y-a[x];
				minn=min(minn,y);
			}
			else
			{
				if(a[x]>=minn)
				{
					if(y>=minn) ans=ans-a[x]+y;
					else ans=ans-a[x]+*--s.lower_bound(minn); 
					minn=*--s.lower_bound(minn);
				}
				else
				{
					if(y>=minn) 
					{
						ans=ans+y-minn;
						minn=*++s.lower_bound(minn);
					}
				}
			}
			s.erase(a[x]);
			a[x]=y;
		}
		cout<<ans<<'\n';
	}
	return 0;
}

2023/6/17 21:42
加载中...