pb_ds 求调
查看原帖
pb_ds 求调
292748
wrkwrkwrk楼主2023/7/23 15:02
#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp> 
#include<ext/pb_ds/tree_policy.hpp> 
using namespace __gnu_pbds;
using namespace std;
namespace NYNAMESPACE{;
tree<pair<int,int>,null_type,less<pair<int,int>>,rb_tree_tag,tree_order_statistics_node_update>l;
int cnt=-0,inf=(1ll<<30);
int main(){
	ios::sync_with_stdio(false);
	int n,m;
	cin>>n>>m; 
	for(int i=1;i<=n;i++){
		int c;
		cin>>c;
		l.insert({c,cnt++});
	}
	int la=0,an=0;;
	while(m--){
		int op,x;
		cin>>op>>x;
		x^=la;
		if(op==1){
			l.insert({x,cnt++});
		}
		if(op==2){
			l.erase(*l.lower_bound({x,0}));
		}
		if(op==3){
			int ans=l.order_of_key(*l.lower_bound({x,0}))+1;
			la=ans;
			an^=ans;
		} 
		if(op==4){
			int ans=(*l.find_by_order(x-1)).first;
			la=ans;
			an^=ans;
		}
		if(op==5){
			auto a=l.lower_bound({x,0});a--;
			int ans=(*a).first;
			la=ans;
			an^=ans;
		}
		if(op==6){
			auto a=l.upper_bound({x,inf});
			int ans=(*a).first;
			la=ans;
			an^=ans;
		}
	}
	cout<<an;
	return 0;
}
}
signed main(){
	return NYNAMESPACE::main();
}

普通版可过。这里72pts

2023/7/23 15:02
加载中...