Submission #1324849

#TimeUsernameProblemLanguageResultExecution timeMemory
1324849exoworldgdBitwise (BOI06_bitwise)C++20
0 / 100
1 ms332 KiB
#include<bits/stdc++.h>
#define exoworldgd cin.tie(0)->sync_with_stdio(0),cout.tie(0)
#define int long long
using namespace std;
int n,p,k[10005],at[10005],fix[10005],z,l[10005],r[10005];
signed main(void){
	exoworldgd;
	cin>>n>>p;
	for(int i=0;i<p;i++)cin>>k[i];
	for(int i=0,len=0;i<p;i++,at[i]=len,at[i+1]=len+=k[i])for(int j=at[i];j<at[i+1];j++)cin>>l[j]>>r[j];
	for(int b=30;b+1;b--){
		int s=1ll<<b,ok=1;
		for(int i=0;i<p;i++){
			if(fix[i])continue;
			int c=0;
			for(int j=at[i];j<at[i+1];j++)c+=(s<=r[j]);
			if(!c)ok=0;
		}
		for(int i=0;i<p;i++){
			int t=0,sa=0;
			for(int j=at[i];j<at[i+1];j++)sa+=r[j]>=s,t+=r[j]>=s&&l[j]<s;
			if(t&&(!ok||sa>1)){fix[i]=1;continue;}
			for(int j=at[i];j<at[i+1];j++)if(r[j]>=s)r[j]-=s,l[j]-=s;
		}
		if(ok)z|=s;
	}
	cout<<z;
}
#Verdict Execution timeMemoryGrader output
Fetching results...