Submission #1305514

#TimeUsernameProblemLanguageResultExecution timeMemory
1305514HasanV11010238Bali Sculptures (APIO15_sculpture)C++20
37 / 100
1 ms628 KiB
#include<bits/stdc++.h> #define ll long long #define mod 1000000007 using namespace std; int main(){ ll n, a, b, ans = 0; cin>>n>>a>>b; vector<ll> v(n + 1, 0), pr(n + 1, 0); for (int i = 1; i <= n; i++){ cin>>v[i]; pr[i] = pr[i - 1] + v[i]; } for (ll i = 0; i <= 30; i++){ ans = (ans | (1LL<<i)); } if (a == 1){ vector<ll> dp(n + 1, 0); for (ll ind = 30; ind >= 0; ind--){ ans = (ans ^ (1LL<<ind)); dp[0] = 0; for (int i = 1; i <= n; i++){ dp[i] = n + 1; for (int j = 0; j < i; j++){ ll su = (pr[i] - pr[j]); ll nu = (ans | su); if (nu == ans) dp[i] = min(dp[j] + 1, dp[i]); } } if (dp[n] > b){ ans = (ans ^ (1LL<<ind)); } } } else{ vector<vector<ll>> dp(n + 1, vector<ll>(n + 1, 0)); for (ll ind = 30; ind >= 0; ind--){ ans = (ans ^ (1LL<<ind)); dp[0][0] = 1; for (int i = 1; i <= n; i++){ for (int j = 1; j <= n; j++) dp[i][j] = 0; for (int j = 0; j < i; j++){ ll su = (pr[i] - pr[j]); ll nu = (ans | su); if (nu == ans){ for (int k = 1; k <= n; k++){ dp[i][k] = max(dp[i][k], dp[j][k - 1]); } } } } int can = 0; for (int i = a; i <= b; i++){ if (dp[n][i] == 1) can = 1; } if (can == 0) ans = (ans ^ (1LL<<ind)); } } cout<<ans; }
#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...