Submission #1192240

#TimeUsernameProblemLanguageResultExecution timeMemory
1192240SofiatpcBali Sculptures (APIO15_sculpture)C++20
71 / 100
569 ms596 KiB
#include <bits/stdc++.h>

using namespace std;

#define int long long
const int MAXN = 105;
int dp[MAXN][MAXN], v[MAXN], ban[50];

bool ok(int x){
	for(int i = 0; i <= 45; i++)
		if( ( x &(1LL<<i)) && ban[i] )return false;
	return true;
}

signed main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);

	int n,a,b; cin>>n>>a>>b;
	for(int i = 1; i <= n; i++)cin>>v[i];

	dp[n+1][0] = 1;
		
	int ans = 0;
	for(int bit = 45; bit >= 0; bit--){
		ban[bit] = 1;

		for(int i = n; i >= 1; i--){
			for(int x = 1; x <= b; x++){
				dp[i][x] = 0;

				int sum = 0;
				for(int j = i+1; j <= n+1; j++){
					sum += v[j-1];
					if(ok(sum))dp[i][x] |= dp[j][x-1];
				}
			}
		}

		ban[bit] = 0;
		ans += (1LL<<bit);
		for(int x = a; x <= b; x++)
			if(dp[1][x] == 1){
				ban[bit] = 1;
				ans -= (1LL<<bit);
				break;
			}
	}
	
	cout<<ans<<"\n";
}
#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...