9973 2024. 03. 22 14:09:41 111 Xor cpp17 Időlimit túllépés 0/100 166ms 4712 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

int solve(int l,int r,int&x,int&y,int&z){
	x=l,y=l+1,z=l+2;
	int ox=0,oy=0,oz=0;
	for(int i=62;i>=0;i--){
		int a=l>>i&1,b=r>>i&1;
		if(a!=b){
			if(r>=ox+(b<<i)+2){
				int ax=ox|1ll<<i;
				int ay=oy|1ll<<i;
				int az=oz|1ll<<i;
				for(int j=i-1;j>=0;j--){
					int b=r>>j&1;
					if(ax!=ay){
						ax|=1ll<<j;
					}
					else if(b){
						ay|=1ll<<j;
					}
				}
				if((ax^ay^az)>(x^y^z)){
					x=ax,y=ay,z=az;
				}
			}
			if(l<=ox+(b<<i)-2){
				int ax=ox;
				int ay=oy;
				int az=oz|1ll<<i;
				for(int j=i-1;j>=0;j--){
					int b=l>>j&1;
					if(ax!=ay){
						ax|=1ll<<j;
					}
					else if(!b){
						ay|=1ll<<j;
					}
					else{
						ax|=1ll<<j;
						ay|=1ll<<j;
					}
				}
				if((ax^ay^az)>(x^y^z)){
					x=ax,y=ay,z=az;
				}
			}
			break;
		}
		ox|=a<<i;
		oy|=a<<i;
		oz|=a<<i;
	}
	return x^y^z;
}

int solve2(int l,int r,int&x,int&y,int&z){
	x=0,y=0,z=0;
	int ax,ay,az;
	for(ax=l;ax<=r;ax++){
		for(ay=ax+1;ay<=r;ay++){
			for(az=ay+1;az<=r;az++){
				if((ax^ay^az)>(x^y^z)){
					x=ax,y=ay,z=az;
				}
			}
		}
	}
	return x^y^z;
}

signed main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
#ifdef CB
	freopen("be1.txt","r",stdin);
//	freopen("out.txt","w",stdout);
#endif
	for(int l=0;l<=100;l++){
		for(int r=l+2;r<=100;r++){
			int x,y,z;
			if(solve(l,r,x,y,z)!=solve2(l,r,x,y,z)){
				cout<<l<<' '<<r<<'\n';
				cout<<solve(l,r,x,y,z)<<" : "<<x<<' '<<y<<' '<<z<<'\n';
				cout<<solve2(l,r,x,y,z)<<" : "<<x<<' '<<y<<' '<<z<<'\n';
				exit(1);
			}
		}
	}
	int T;
	cin>>T;
	while(T--){
		int L,R;
		cin>>L>>R;
		int x,y,z;
		solve(L,R,x,y,z);
		cout<<x<<' '<<y<<' '<<z<<'\n';
	}
	return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 0/100
1 Időlimit túllépés 0/0 152ms 1804 KiB
2 Időlimit túllépés 0/0 163ms 2308 KiB
3 Időlimit túllépés 0/5 159ms 2376 KiB
4 Időlimit túllépés 0/5 158ms 2588 KiB
5 Időlimit túllépés 0/5 158ms 2672 KiB
6 Időlimit túllépés 0/5 157ms 2820 KiB
7 Időlimit túllépés 0/5 159ms 3188 KiB
8 Időlimit túllépés 0/5 149ms 2928 KiB
9 Időlimit túllépés 0/5 162ms 3252 KiB
10 Időlimit túllépés 0/5 136ms 3144 KiB
11 Időlimit túllépés 0/5 166ms 3692 KiB
12 Időlimit túllépés 0/5 144ms 3628 KiB
13 Időlimit túllépés 0/5 152ms 3656 KiB
14 Időlimit túllépés 0/6 157ms 3664 KiB
15 Időlimit túllépés 0/6 152ms 3668 KiB
16 Időlimit túllépés 0/6 158ms 3664 KiB
17 Időlimit túllépés 0/6 150ms 3668 KiB
18 Időlimit túllépés 0/7 137ms 3816 KiB
19 Időlimit túllépés 0/7 165ms 4256 KiB
20 Időlimit túllépés 0/7 165ms 4712 KiB