1
  • 板块灌水区
  • 楼主DoYouLikeKunkun
  • 当前回复1
  • 已保存回复1
  • 发布时间2025/1/16 15:55
  • 上次更新2025/1/16 15:57:34
查看原帖
1
1073079
DoYouLikeKunkun楼主2025/1/16 15:55
#include<bits/stdc++.h>
using namespace std;
int n,m;
long long a[300005],b[300005],cnt[300005],mode=0,md[300005];
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i]>>b[i];
	}
	for(int i=1;i<=n-300;i++){
		cnt[b[i]]+=a[i];
		if(cnt[b[i]]>cnt[mode] or cnt[b[i]]==cnt[mode] and b[i]>mode){
			mode=b[i];
		}
	}
	for(;m;m--){
		int op,x,y;
		long long k;
		cin>>op;
		if(op==1){
			cin>>x>>y;
			a[x]+=y;
			if(x<=n-300){
				cnt[b[x]]+=y;
				if(cnt[b[i]]>cnt[mode] or cnt[b[i]]==cnt[mode] and b[i]>mode){
					mode=x;
				}
			}
		}
		else{
			cin>>k;
			md[n-300]=mode;
			for(int i=n-300+1;i<=n;i++){
				cnt[b[i]]+=a[i];
				if(cnt[b[i]]>cnt[md[i-1]] or cnt[b[i]]==cnt[md[i-1]] and b[i]>md[i-1]){
					md[i]=b[i];
				}
				else{
					md[i]=md[i-1];
				}
			}
			for(int i=n;i>n-300;i--){
				k^=md[i]*a[i];
				if(k==0){
					
					break;
				}
			}
		}
	}
	return 0;
}
2025/1/16 15:55
加载中...