Submission #671127

#TimeUsernameProblemLanguageResultExecution timeMemory
671127fatemetmhrBali Sculptures (APIO15_sculpture)C++17
50 / 100
77 ms340 KiB
// fikhshal chye daram code miznm :} #include <bits/stdc++.h> using namespace std; typedef long long ll; #define all(x) x.begin(), x.end() #define pb push_back #define fi first #define se second const int maxn5 = 2e3 + 10; const int maxn3 = 105; const int lg = 41; int n, ln, rn, dp[maxn5], a[maxn5]; bool av[maxn3][maxn3]; inline bool check(ll lim){ //cout << "lim = " << lim << endl; if(ln == 1){ for(int i = 0; i < n; i++){ ll cur = 0; dp[i] = rn + 1; for(int j = i; j; j--){ cur += a[j]; //cout << "aha " << i << ' ' << j << ' ' << cur << ' ' << (cur | lim) << endl; if((cur | lim) == lim) dp[i] = min(dp[i], dp[j - 1] + 1); } cur += a[0]; if((cur | lim) == lim) dp[i] = 1; //cout << "ok " << i << ' ' << dp[i] << endl; } return dp[n - 1] <= rn; } memset(av, false, sizeof av); for(int i = 0; i < n; i++){ ll cur = 0; for(int j = i; j; j--){ cur += a[i]; if((cur | lim) == lim){ for(int k = 0; k < rn; k++) av[i][k + 1] |= av[j - 1][k]; } } cur += a[0]; if((cur | lim) == lim){ av[i][1] = true; } } bool re = false; for(int i = ln; i <= rn; i++) re |= av[n - 1][i]; return re; } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cin >> n >> ln >> rn; for(int i = 0; i < n; i++) cin >> a[i]; ll cur = (1LL << lg) - 1; for(int i = lg - 1; i >= 0; i--){ if(check(cur ^ (1LL << i))) cur ^= (1LL << i); } cout << cur << endl; } /* 6 1 3 8 1 2 1 5 4 */
#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...