Submission #766510

#TimeUsernameProblemLanguageResultExecution timeMemory
7665101neBali Sculptures (APIO15_sculpture)C++14
37 / 100
120 ms2144 KiB
#include<bits/stdc++.h>
using namespace std; 
int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	long long n,a,b;cin>>n>>a>>b;
	vector<long long>arr(n);
	for (long long i = 0;i<n;++i){
		cin>>arr[i];
	}
	const long long inf = 1e15;
	vector<long long>pref(n + 1,0);
	for (int i = 0;i<n;++i){
		pref[i + 1] = pref[i] + arr[i];
	}
	auto query = [&](int u,int v){
	  return pref[v + 1] - pref[u];
	};
	vector<vector<int>>adj(n);
	for (long long i = 0;i<32;++i){
		for (int j = 0;j<n;++j){
			for (int k = j;k<n;++k){
				if (query(j,k) & (1LL<<i)){
					continue;
				}	
				adj[j].push_back(k);
			}
		}
	}
	long long cur = 0;
	auto check = [&](long long v){
		vector<vector<int>>dp(n + 1);
		dp[0].push_back(0);
		for (int i = 0;i<n;++i){
			sort(dp[i].begin(),dp[i].end());
			dp[i].erase(unique(dp[i].begin(),dp[i].end()),dp[i].end());
			for (int x = i;x<n;++x){
				if (query(i,x) & v){
					continue;
				}
				for (auto y:dp[i]){
					if (y + 1 <= b)
						dp[x + 1].push_back(y + 1);
				}
			}
		}
		for (auto x:dp[n]){
			if (x >= a && x <= b)return 1;
		}
		return 0;
	};
	long long ans = 0;
	for (long long i = 32;i>=0;--i){
		if (check((cur ^ (1LL<<i)))){
			cur ^= (1LL<<i);
		}
		else{
			ans ^= (1LL<<i);
		}	
	}
	cout<<ans<<'\n';
	return 0;
}

Compilation message (stderr)

sculpture.cpp: In function 'int main()':
sculpture.cpp:11:18: warning: unused variable 'inf' [-Wunused-variable]
   11 |  const long long inf = 1e15;
      |                  ^~~
#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...