Submission #1322135

#TimeUsernameProblemLanguageResultExecution timeMemory
1322135aaaaaaaaBali Sculptures (APIO15_sculpture)C++20
100 / 100
158 ms512 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int inf = 1e9; signed main(){ ios::sync_with_stdio(0); cin.tie(nullptr); cout.tie(nullptr); int n, a, b, ans = 0, mask = 0; cin >> n >> a >> b; vector<int> ar(n + 1, 0); for(int i = 1; i <= n; ++i){ cin >> ar[i]; } if(a == 1){ for(int j = 61; j >= 0; --j){ vector<int> dp(n + 5, inf); dp[0] = 0; mask ^= (1ll << j); for(int i = 1; i <= n; ++i){ int sum = 0; for(int j = i; j >= 1; --j){ sum += ar[j]; if((sum & mask) == 0 && dp[j] <= inf) dp[i] = min(dp[i], dp[j - 1] + 1); } } if(dp[n] > b){ ans ^= (1ll << j); mask ^= (1ll << j); } } cout << ans << "\n"; }else{ for(int j = 61; j >= 0; --j){ vector<vector<int>> dp(n + 5, vector<int>(n + 5, 0)); dp[0][0] = 1; mask ^= (1ll << j); for(int i = 1; i <= n; ++i){ int sum = 0; for(int prev = i; prev >= 1; --prev){ sum += ar[prev]; if((sum & mask) == 0){ for(int k = 1; k <= b; ++k){ dp[i][k] |= dp[prev - 1][k - 1]; } } } } bool ok = 0; for(int i = a; i <= b; ++i){ if(dp[n][i]) ok = 1; } if(!ok){ ans ^= (1ll << j); mask ^= (1ll << j); } } 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...