有没有人用map映射做这个题,感觉是对的,但只有5分
#include<bits/stdc++.h>
using namespace std;
inline int read()
{
int x=0,f=1;char ch=getchar();
while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
return x*f;
}
map<int,long long> a,b;
vector<pair<int,int> > c;
int main(){
int n,qy=0,maxn=0,num=0;
cin>>n;
for(int i=0;i<n;i++){
int opt;
cin>>opt;
if(opt==1){
int l,r,z;
cin>>l>>r>>z;
a[l]^=z;
a[r+1]^=z;
}
if(opt==2){
int l,z;
cin>>l>>z;
a[l]^=z;
}
if(opt==3){
int l,z;
cin>>l>>z;
a[l]^=z;
qy^=z;
}
}
maxn=max(maxn,qy);
for(auto x:a){
qy^=x.second;
if(maxn<qy){
maxn=qy;
num=x.first;
}
if(maxn==qy){
if(abs(num)==abs(x.first)){
num=max(num,x.first);
}
else if(abs(num)>abs(x.first)){
num=x.first;
}
}
}
cout<<maxn<<" "<<num<<" ";
}