QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#869100#9727. Barkley IIINana7TL 1903ms62644kbC++203.1kb2025-01-24 23:04:152025-01-24 23:04:17

Judging History

This is the latest submission verdict.

  • [2025-01-24 23:04:17]
  • Judged
  • Verdict: TL
  • Time: 1903ms
  • Memory: 62644kb
  • [2025-01-24 23:04:15]
  • Submitted

answer

#include<bits/stdc++.h>
#define ll long long
#define int long long
#define lson (k<<1)
#define rson (k<<1|1)
#define mid (l+r>>1)
#define int long long
#define I inline
using namespace std;

const long long M = (1ll<<63)-1;
const int N = 1000100;
struct node {
	int tag,sum,msk;
}tr[N<<2];
int n,q,a[N],pw[64];

I void acc(int l,int r,int k,int v) {
	tr[k].sum&=v;
	if(tr[k].tag==-1) tr[k].tag=v;
	else tr[k].tag&=v;
	if(l==r) tr[k].msk=M-tr[k].sum;
	else tr[k].msk&=v;
}
I void pushdown(int l,int r,int k) {
	if(tr[k].tag==-1) return;
	acc(l,mid,lson,tr[k].tag);
	acc(mid+1,r,rson,tr[k].tag);
	tr[k].tag=-1;
}
I void update(int k) {
	tr[k].sum=tr[lson].sum&tr[rson].sum;
	tr[k].msk=(tr[lson].msk&tr[rson].sum)|(tr[rson].msk&tr[lson].sum);
}
void build(int l,int r,int k) {
	tr[k].tag=-1;
	if(l==r) {
		tr[k].sum=a[l];
		tr[k].msk=M-a[l];
		return ;
	}
	build(l,mid,lson);
	build(mid+1,r,rson);
	update(k);
}
void change(int l,int r,int ps,int v,int k) {
	if(l==r) {
		tr[k].sum=v;
		tr[k].tag=v;
		tr[k].msk=M-v;
		return ;
	}
	pushdown(l,r,k);
	if(ps<=mid) change(l,mid,ps,v,lson);
	else change(mid+1,r,ps,v,rson);
	update(k);
}
void cover(int l,int r,int nl,int nr,int v,int k) {
	if(l>=nl&&r<=nr) {
		acc(l,r,k,v);
		return ;
	}
	pushdown(l,r,k);
	if(nl<=mid) cover(l,mid,nl,nr,v,lson);
	if(nr>mid) cover(mid+1,r,nl,nr,v,rson);
	update(k);
}
node query(int l,int r,int nl,int nr,int k) {
	if(l>=nl&&r<=nr) {
		return tr[k];
	}
	pushdown(l,r,k);
	if(nl<=mid&&nr>mid) {
		node n1=query(l,mid,nl,nr,lson),n2=query(mid+1,r,nl,nr,rson);
		node ret; ret.sum=n1.sum&n2.sum; ret.msk=(n1.sum&n2.msk)|(n1.msk&n2.sum);
		return ret;
	}
	else if(nl<=mid) return query(l,mid,nl,nr,lson);
	else if(nr>mid) return query(mid+1,r,nl,nr,rson);
}

int findps(int l,int r,int lpos,int k,int v) {
	if(tr[k].sum&v) return 0;
	if(l==r) return l;
	pushdown(l,r,k);
	if(l>=lpos) {
		if(tr[lson].sum&v) return findps(mid+1,r,lpos,rson,v);
		else return findps(l,mid,lpos,lson,v);
	} else if(mid<lpos) {
		return findps(mid+1,r,lpos,rson,v);
	} else {
		int mk=findps(l,mid,lpos,lson,v);
		if(mk) return mk;
		else return findps(mid+1,r,lpos,rson,v);
	}
}

I void solve() {
	cin>>n>>q;
	for(int i=1;i<=n;++i) cin>>a[i];
	build(1,n,1);
	for(int i=1;i<=q;++i) {
		int o; cin>>o;
		if(o==1) {
			int l,r,x; cin>>l>>r>>x;
			cover(1,n,l,r,x,1);
		} else if(o==2) {
			int s,x; cin>>s>>x;
			change(1,n,s,x,1);
		} else {
			int l,r; cin>>l>>r;
			if(l==r) {
				cout<<0<<endl;
				continue;
			}
			auto [tag,sum,msk]=query(1,n,l,r,1);
			if(!msk) {
				cout<<sum<<endl;
			} else {
				for(int i=62;i>=0;--i) {
					if(msk&pw[i]){
						msk&=pw[i];
						break;
					}
				}	
				int ps=findps(1,n,l,1,msk),ans=M;
				if(ps-1>=l) ans&=query(1,n,l,ps-1,1).sum;
				if(ps+1<=r) ans&=query(1,n,ps+1,r,1).sum;
				cout<<ans<<endl;
				
			}	
		}
	}
}
signed main()
{
	//cout<<M<<endl;
	{
		pw[0]=1;
		for(int i=1;i<=63;++i) pw[i]=pw[i-1]<<1;
	}
	solve();
}
/*
5 9
 7 7 7 6 7
 3 1 5
 2 1 3
 3 1 5
 3 1 3
 1 1 2 3
 3 1 3
 2 2 8
 3 1 3
 3 1 2

*/

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 5652kb

input:

5 9
7 7 7 6 7
3 1 5
2 1 3
3 1 5
3 1 3
1 1 2 3
3 1 3
2 2 8
3 1 3
3 1 2

output:

7
6
7
3
3
8

result:

ok 6 lines

Test #2:

score: 0
Accepted
time: 0ms
memory: 5704kb

input:

10 10
6760061359215711796 1568091718842717482 1568091718842717482 1568091718842717482 5232472783634052627 8795942500783873690 1568091718842717482 1568091718842717482 1568091718842717482 1568091718842717482
1 3 5 7587422031989082829
3 6 10
1 7 8 5197616143400216932
2 4 2518604563805514908
2 2 4533959...

output:

1568091718842717482
35184908959744
176025477579040
8795942500783873690

result:

ok 4 lines

Test #3:

score: 0
Accepted
time: 0ms
memory: 5708kb

input:

100 100
4263579105072360993 4263579105072360993 4263579105072360993 4263579105072360993 4263579105072360993 4263579105072360993 4263579105072360993 4263579105072360993 4263579105072360993 625967318191814868 4263579105072360993 4263579105072360993 4263579105072360993 4263579105072360993 4263579105072...

output:

576531121047601152
1
576460752303423488
4263579105072360993
1306043896232411137
4263579105072360993
576531121047601152
633397148123136
0
1153488865559840256
1152922054496880128
1730020640668059136
3533641810948498945
67108864
1730020640668059136
0
633397148123136
1729382296723653632
0
17300206406680...

result:

ok 78 lines

Test #4:

score: 0
Accepted
time: 2ms
memory: 5708kb

input:

1000 1000
3368486440884437410 3368486440884437410 3368486440884437410 3368486440884437410 3368486440884437410 3368486440884437410 3368486440884437410 3368486440884437410 3368486440884437410 3368486440884437410 3368486440884437410 3639580211161047627 3368486440884437410 3368486440884437410 3368486440...

output:

3368486440884437410
3368486440884437410
3368486440884437410
2251799981457408
0
0
3368486440884437410
0
3326828075601101216
592509842556584322
0
0
0
0
0
0
37154696925806592
0
0
0
3368486440884437410
0
0
3368486440884437410
0
578998425140330496
0
0
134217728
0
3368486440884437410
2306405959167115264
0...

result:

ok 732 lines

Test #5:

score: 0
Accepted
time: 142ms
memory: 12608kb

input:

100000 100000
4364025563773184234 7745126251050571359 5111681002836044963 7745126251050571359 7745126251050571359 7745126251050571359 7745126251050571359 7745126251050571359 7745126251050571359 7745126251050571359 7745126251050571359 7745126251050571359 7222555899134537718 7745126251050571359 686495...

output:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
4613942216556019776
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
...

result:

ok 75105 lines

Test #6:

score: 0
Accepted
time: 1811ms
memory: 61224kb

input:

1000000 1000000
5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485...

output:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8796093022208
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
576460754450907136
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0...

result:

ok 749866 lines

Test #7:

score: 0
Accepted
time: 1794ms
memory: 60732kb

input:

1000000 1000000
6478641409915854014 6478641409915854014 6478641409915854014 6478641409915854014 6478641409915854014 6478641409915854014 6478641409915854014 6478641409915854014 6478641409915854014 6478641409915854014 6478641409915854014 815888006180307319 6478641409915854014 6478641409915854014 37784...

output:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
...

result:

ok 749822 lines

Test #8:

score: 0
Accepted
time: 1826ms
memory: 61132kb

input:

1000000 1000000
8129239286682760854 3981028880940170401 2535635990161413927 8316479514668652599 5147316903112543089 4630570098268037408 8505388156841465368 2203883581249948495 581610100009626881 5079268521394939 1476469952815397946 4914699404295060276 4440084747042452220 2702894635900623841 90540586...

output:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
...

result:

ok 749812 lines

Test #9:

score: 0
Accepted
time: 1842ms
memory: 62132kb

input:

1000000 1000000
7320373167365396487 7320373167365396487 937526916087788458 7320373167365396487 7320373167365396487 7320373167365396487 6758767667984378025 7320373167365396487 7320373167365396487 7320373167365396487 5687396935769483606 1467370155631201061 3556475128226340387 2212274051825085385 77978...

output:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
...

result:

ok 748638 lines

Test #10:

score: 0
Accepted
time: 0ms
memory: 5708kb

input:

2 2
3937866409909043622 2873041425983999763
2 2 3645842096674595914
2 1 5018240021376355677

output:


result:

ok 0 lines

Test #11:

score: 0
Accepted
time: 1800ms
memory: 60632kb

input:

1000000 1000000
4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900...

output:

4900813446099088166
4899930503817200418
4900813446099088166
4899916948900413730
4899916948900413730
4899930503817200418
4899930503817200418
4899930503817200418
4899930503817200418
4900813446099088166
288230380446679040
288230380446679040
4899930503817200418
4899930503817200418
0
768
768
288230724044...

result:

ok 748697 lines

Test #12:

score: 0
Accepted
time: 1842ms
memory: 62036kb

input:

1000000 1000000
4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896...

output:

4896682234503638342
4896682234503638342
4896682234503638342
82333682484117506
4896682234503638342
82333682484117506
9150188513918978
9150188513918978
4896682234503638342
4896682234503638342
9150188513918978
4896682234503638342
9150188513918978
4896682234503638342
4896682234503638342
9150188513918978...

result:

ok 748737 lines

Test #13:

score: 0
Accepted
time: 1800ms
memory: 61160kb

input:

1000000 1000000
5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828...

output:

5828086749355423563
8192
0
0
1152921504793493761
0
0
0
134217728
5828086749355423563
4647719230811407937
0
0
0
0
4647719230811407937
4611686018427396096
0
0
4415226380288
0
0
0
0
4665729214006427657
0
0
4665729213955833856
0
4665733612138661120
0
0
4611686018429485056
4666015104295802624
0
0
0
0
0
4...

result:

ok 749804 lines

Test #14:

score: 0
Accepted
time: 1829ms
memory: 61764kb

input:

1000000 1000000
1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970...

output:

18014398510006272
1970703737173261435
1970703737173261435
18014398510006272
1170935903116331008
1170935903116331008
1242993501449496576
72057598332903424
72127962782629888
72057594037927936
72057598333165568
70405251923968
0
0
0
0
0
0
0
673367418922088530
72127962782892032
18014398509481984
0
704052...

result:

ok 749806 lines

Test #15:

score: 0
Accepted
time: 1820ms
memory: 61048kb

input:

1000000 1000000
1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268...

output:

1191203210145169410
0
0
0
0
0
0
0
8589934592
705069918064678
704786953404416
0
0
1268538845505400998
1268538845505400998
4503633987117056
8589934592
0
633318697730048
2251804108783616
0
0
0
0
4503599627374592
0
0
0
0
704791248371712
1099511627776
0
0
0
1268538845505400998
0
0
633318731153408
1268538...

result:

ok 749818 lines

Test #16:

score: 0
Accepted
time: 1843ms
memory: 62420kb

input:

1000000 1000000
8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796...

output:

0
0
0
0
0
0
0
0
0
0
4612249037637189632
0
0
0
0
0
0
144115189706063880
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8219350795484238412
0
0
0
536870912
0
0
0
0
0
0
8214847195317895748
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
144115188092633600
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
...

result:

ok 749921 lines

Test #17:

score: 0
Accepted
time: 1824ms
memory: 62644kb

input:

1000000 1000000
1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639...

output:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
324259173170675712
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
288231492843216896
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
144115188075864064
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0...

result:

ok 749798 lines

Test #18:

score: 0
Accepted
time: 1903ms
memory: 60892kb

input:

1000000 1000000
504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451...

output:

504297928904866451
504297928904866451
504297928904866451
504297928904866451
504297928904866451
504297928904866451
504297928904866451
504297928904866451
504297928904866451
504297928904866451
292733989738811392
504297928904866451
504297928904866451
504297928904866451
504297928904866451
504297928904866...

result:

ok 332866 lines

Test #19:

score: -100
Time Limit Exceeded

input:

1000000 1000000
2984855923226151208 2984855923226151208 2984855923226151208 2984855923226151208 2984855923226151208 2984855923226151208 2984855923226151208 2984855923226151208 2984855923226151208 2984855923226151208 2984855923226151208 2984855923226151208 2984855923226151208 2984855923226151208 2984...

output:


result: