Submission #48149

#TimeUsernameProblemLanguageResultExecution timeMemory
48149square1001Bali Sculptures (APIO15_sculpture)C++14
0 / 100
2 ms640 KiB
#include <vector>
#include <cassert>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
	int N, A, B;
	cin >> N >> A >> B;
	assert(A == 1);
	vector<int> v(N);
	for (int i = 0; i < N; i++) cin >> v[i];
	long long ret = 0;
	for (int i = 40; i >= 0; i--) {
		vector<int> dp(N + 1, 1 << 30);
		dp[0] = 0;
		for (int j = 1; j <= N; j++) {
			long long cur = 0;
			for (int k = j - 1; k >= 0; k--) {
				cur += v[k];
				if (((cur >> (i + 1)) | ret) == ret && !((cur >> i) & 1)) {
					dp[j] = min(dp[j], dp[k]);
				}
			}
		}
		ret <<= 1;
		if (dp[N] > B) ret++;
	}
	cout << ret << '\n';
	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...