Submission #435225

#TimeUsernameProblemLanguageResultExecution timeMemory
435225iANikzadBali Sculptures (APIO15_sculpture)C++14
100 / 100
330 ms31964 KiB
#include<bits/stdc++.h> using namespace std; #define pb push_back #define F first #define S second #define debug(x) cerr<<#x<<" :"<<x<<"\n" #define all(x) x.begin(),x.end() #define pii pair<int,int> #define FAST ios_base::sync_with_stdio(false), cin.tie(), cout.tie(); #define int long long typedef long long ll; typedef long double ld; const int maxn = 2e3 + 7; const int mod = 1e9 + 7; const int INF = 1e9 + 7; const int maxl = 43; const int SQ = 400; int n, x, y; int ans = (1ll << maxl) - 1; int a[maxn]; int dp[maxn], pd[maxn][maxn]; int check(int cur) { memset(dp, 0, sizeof(dp)); memset(pd, 0, sizeof(pd)); pd[0][0] = 1; for(int i = 1; i <= n; i++) { int sum = 0; dp[i] = +INF; for(int j = i - 1; j >= 0; j--) { sum += a[j + 1]; if((sum | cur) != cur) continue; if(x == 1) { dp[i] = min(dp[i], dp[j] + 1); continue; } for(int k = 1; k <= i; k++) pd[i][k] |= pd[j][k - 1]; } } if(x == 1) return (dp[n] <= y); for(int i = x; i <= y; i++) if(pd[n][i]) return 1; return 0; } int32_t main() { FAST; cin >> n >> x >> y; for(int i = 1; i <= n; i++) cin >> a[i]; for(int i = maxl - 1; i >= 0; i--) if(check(ans ^ (1ll << i))) ans ^= (1ll << i); cout << ans << "\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...