Submission #676867

#TimeUsernameProblemLanguageResultExecution timeMemory
676867ArnchBali Sculptures (APIO15_sculpture)C++17
75 / 100
92 ms1108 KiB
// oooo /* har chi delet mikhad bebar ~ gitar o ba khodet nabar! ~ ;Amoo_Hasan; */ /* link: */ #include<bits/stdc++.h> //#pragma GCC optimize("O3,no-stack-protector,unroll-loops") //#pragma GCC target("avx2,fma") using namespace std; typedef long long ll; typedef long double ld; #define Sz(x) int((x).size()) #define All(x) (x).begin(), (x).end() #define wtf(x) cout<<#x <<" : " <<x <<endl #define mak make_pair //constexpr int PRI = 1000696969; constexpr ll INF = 1e18, N = 2e3 + 10, MOD = 1e9 + 7; int n, A, B; ll a[N], dp[N], ps[N][50]; bool ok(ll x) { if(A == 1) { ll sum = 0; dp[0] = 0; for(int i = 1; i <= n; i++) { dp[i] = INF; sum = 0; for(int j = i; j >= 1; j--) { sum += a[j]; if((sum & x) == sum) dp[i] = min(dp[i], dp[j - 1] + 1); } } if(dp[n] <= B) return true; return false; } memset(ps, 0, sizeof(ps)); ps[0][0] = 1; for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) { ll sum = 0; for(int k = j; k >= 1; k--) { sum += a[k]; if((sum & x) == sum) ps[j][i] |= ps[k - 1][i - 1]; } } } for(int i = A; i <= B; i++) if(ps[n][i] == 1) return 1; return 0; } int main() { ios :: sync_with_stdio(0), cin.tie(0); cout.tie(0); cin >>n >>A >>B; for(int i = 1; i <= n; i++) cin >>a[i]; ll ans = 0; for(int i = 42; i >= 0; i--) { if(ok(ans + (1ll << i) - 1)) continue; ans |= (1ll << i); } cout<<ans; 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...