Submission #361523

#TimeUsernameProblemLanguageResultExecution timeMemory
361523alireza_kavianiBali Sculptures (APIO15_sculpture)C++11
100 / 100
209 ms16512 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll, ll> pll; typedef pair<int, int> pii; #define all(x) (x).begin(),(x).end() #define X first #define Y second #define sep ' ' #define endl '\n' #define SZ(x) ll(x.size()) const ll MAXN = 2e3 + 10; const ll LOG = 43; const ll INF = 8e18; const ll MOD = 1e9 + 7; //998244353; //1e9 + 9; ll n , x , y , A[MAXN] , ans = (1ll << LOG) - 1; int dp[MAXN] , dp2[MAXN][MAXN]; int check(ll cur){ memset(dp , 0 , sizeof(dp)); memset(dp2 , 0 , sizeof(dp2)); dp2[0][0] = 1; for(int i = 1 ; i <= n ; i++){ ll sum = 0; dp[i] = MOD; 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++){ dp2[i][k] |= dp2[j][k - 1]; } } } if(x == 1) return (dp[n] <= y); for(int i = x ; i <= y ; i++){ if(dp2[n][i]) return 1; } return 0; } int main() { ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); cin >> n >> x >> y; for(int i = 1 ; i <= n ; i++) cin >> A[i]; for(int i = LOG - 1 ; i >= 0 ; i--){ if(check(ans ^ (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...