Submission #736015

#TimeUsernameProblemLanguageResultExecution timeMemory
736015Alihan_8Bali Sculptures (APIO15_sculpture)C++17
100 / 100
106 ms408 KiB
#include <bits/stdc++.h> using namespace std; #define all(x) x.begin(), x.end() #define pb push_back #define ln '\n' #define int long long template <class _T> bool chmin(_T &x, const _T &y){ bool flag = false; if ( x > y ){ x = y; flag |= true; } return flag; } template <class _T> bool chmax(_T &x, const _T &y){ bool flag = false; if ( x < y ){ x = y; flag |= true; } return flag; } signed main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); int n, a, b; cin >> n >> a >> b; vector <int> p(n); for ( auto &i: p ) cin >> i; const int inf = 1e15 + 1; vector <int> pref(n + 1); for ( int i = 0; i < n; i++ ){ pref[i + 1] = pref[i] + p[i]; } if ( a == 1 ){ int ans = 0; for ( int bit = 60; bit >= 0; bit-- ){ vector <int> dp(n + 1, n + 1); dp[0] = 0; for ( int i = 1; i <= n; i++ ){ for ( int j = 0; j + 1 <= i; j++ ){ int v = (pref[i] - pref[j]) >> bit; if ( ((v | ans) ^ ans) == false ){ chmin(dp[i], dp[j] + 1); } } } ans = (ans + (dp.back() > b)) << 1; } cout << ans / 2 << ln; return 0; } int ans = 0; for ( int bit = 60; bit >= 0; bit-- ){ vector <vector<int>> dp(n + 1, vector <int> (n + 1)); dp[0][0] = true; for ( int i = 1; i <= n; i++ ){ for ( int j = 1; j <= i; j++ ){ for ( int k = 0; k + 1 <= i; k++ ){ if ( !dp[k][j - 1] ) continue; int v = (pref[i] - pref[k]) >> bit; if ( ((v | ans) ^ ans) == false ){ dp[i][j] = true; break; } } } } bool flag = false; for ( int i = a; i <= b; i++ ){ flag |= dp[n][i]; } ans = (ans + !flag) << 1; } cout << ans / 2; cout << '\n'; } /* 6 1 3 8 1 2 1 5 4 */

Compilation message (stderr)

sculpture.cpp: In function 'int main()':
sculpture.cpp:35:15: warning: unused variable 'inf' [-Wunused-variable]
   35 |     const int inf = 1e15 + 1;
      |               ^~~
#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...