改来改去代码都快改成一样的了还是90pts,WA on #7 #11
#include<bits/stdc++.h>
#define Code using
#define by namespace
#define wjb std
Code by wjb;
#define int long long
int in()
{
int k=0,f=1;
char c=getchar();
while(c<'0'||c>'9')
{
if(c=='-')f=-1;
c=getchar();
}
while(c>='0'&&c<='9')k=k*10+c-'0',c=getchar();
return k*f;
}
void out(int x)
{
if(x<0)putchar('-'),x=-x;
if(x<10)putchar(x+'0');
else out(x/10),putchar(x%10+'0');
}
const int N=1e5+10,inf=1e18;
struct node
{
int xb,num;
}a[N<<2];
bool cmp(node a,node b)
{
return a.xb<b.xb;
}
int cnt=0;
int tt(int x,int y)
{
if(x<0&&y<0)return y;
if(x>0&&y>0)return x;
return 0;
}
signed main()
{
int n=in();
for(int i=1;i<=n;i++)
{
int t=in();
if(t==1)
{
int l=in(),r=in(),w=in();
a[++cnt]=node{l,w};
a[++cnt]=node{r+1,w};
}
else if(t==2)
{
int aa=in(),w=in();
a[++cnt]=node{aa,w};
a[++cnt]=node{aa+1,w};
}
else
{
int bb=in(),w=in();
a[++cnt]=node{-inf,w};
a[++cnt]=node{bb,w};
a[++cnt]=node{bb+1,w};
a[++cnt]=node{inf,w};
}
}
sort(a+1,a+cnt+1,cmp);
int now=0,maxx=-inf,l,r;
for(int i=1;i<=cnt;)
{
int j=i;
while(a[j].xb==a[i].xb)now^=a[j].num,j++;
if(now>maxx)maxx=now,l=a[i].xb,r=a[j].xb-1;
else if(now==maxx)
{
int t1=tt(a[i].xb,a[j].xb-1),t2=tt(l,r);
if(abs(t1)<abs(t2))l=a[i].xb,r=a[j].xb-1;
else if(abs(t1)==abs(t1)&&t1!=t2)
if(t2<0)l=a[i].xb,r=a[j].xb-1;
}
i=j;
}
out(maxx),putchar(' '),out(tt(l,r));
return 0;
}