Submission #463810

#TimeUsernameProblemLanguageResultExecution timeMemory
463810MohamedAhmed04Bali Sculptures (APIO15_sculpture)C++14
37 / 100
28 ms360 KiB
#include <bits/stdc++.h>

using namespace std ;

const int MAX = 100 + 10 ;

int arr[MAX] ;
int n , a , b ;

int mask , ans ;

int dp[MAX][MAX] ;

int solve(int idx , int groups)
{
	if(groups > b)
		return 0 ;
	if(idx == n)
		return (groups >= a && groups <= b) ;
	int &ret = dp[idx][groups] ;
	if(ret != -1)
		return ret ;
	ret = 0 ;
	int sum = 0 ;
	for(int i = idx ; i < n ; ++i)
	{
		sum += arr[i] ;
		if((sum & mask))
			continue ;
		ret |= solve(i+1 , groups+1) ;
	}
	return ret ;
}

bool check()
{
	memset(dp , -1 , sizeof(dp)) ;
	return (solve(0 , 0) == 1) ;
}


int main()
{
	ios_base::sync_with_stdio(0) ;
	cin.tie(0) ;
	cin>>n>>a>>b ;
	for(int i = 0 ; i < n ; ++i)
		cin>>arr[i] ;
	for(int bit = 29 ; bit >= 0 ; --bit)
	{
		mask |= (1 << bit) ;
		if(!check())
			mask ^= (1 << bit) , ans += (1 << bit) ;
	}
	return cout<<ans<<"\n" , 0 ;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...