Submission #543656

#TimeUsernameProblemLanguageResultExecution timeMemory
543656Sohsoh84Bali Sculptures (APIO15_sculpture)C++17
71 / 100
45 ms468 KiB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef pair<ll, ll> pll;

#define all(x)			(x).begin(),(x).end()
#define X			first
#define Y			second
#define sep			' '
#define endl			'\n'
#define debug(x)		cerr << #x << ": " <<  x << endl;

const ll MAXN = 100 + 10;
const ll LOG = 50;

ll A[MAXN], n, a, b;
bool dp[MAXN][MAXN];

inline bool check(ll mask) {
	memset(dp, false, sizeof dp);
	dp[0][0] = true;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= i; j++) {	
			ll s = 0;
			for (int k = i; k > 0; k--) {
				s += A[k];
				if (!(s & mask))
					dp[i][j] |= dp[k - 1][j - 1];
			}
		}
	}

	return count(dp[n] + a, dp[n] + b + 1, true);
}

int main() {
	ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
	cin >> n >> a >> b;
	for (int i = 1; i <= n; i++) cin >> A[i];

	ll ans = 0, mask = 0;
	for (int i = LOG - 1; i >= 0; i--) {
		mask ^= (1ll << i);
		if (!check(mask)) {
			mask ^= (1ll << i);
			ans ^= (1ll << i);
		}
	}

	cout << ans << endl;
	return 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...