90pts求助
查看原帖
90pts求助
865625
KobeBeanBryantCox楼主2023/11/18 23:56

学这篇题解做的

改来改去代码都快改成一样的了还是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;
}
2023/11/18 23:56
加载中...