Submission #999584

#TimeUsernameProblemLanguageResultExecution timeMemory
999584I_FloPPed21Bali Sculptures (APIO15_sculpture)C++14
0 / 100
1 ms2396 KiB
#include <iostream> using namespace std; int n, a, b; long long v[300005]; long long dp[2005][2005]; long long pd[2005]; void solve2() { long long val = 0; long long tot = 0 ; for ( long long i = 63; i >= 0 ; i -- ) { tot |= ( 1ll << i ) ; } for ( long long i = 63; i >= 0 ; i -- ) { tot -= ( 1ll << i ); for ( int j = 0; j <= n ; j ++ ) { pd[j] = 0 ; for (int k = 0; k <= n ; k ++ ) dp[j][k] = false ; } dp[0][0] = true ; for ( int j = 1; j <= n; j ++ ) { long long sum = 0 ; for ( int k = j ; k >= 1; k -- ) { sum += v[k]; long long cot = ( sum & tot ) ; long long vot = sum - cot ; if ( (val | vot) == val ) { // cout << j << " " << k << '\n'; if( pd[j] == 0 ) pd[j] = pd[k-1]+1; else pd[j] = min ( pd[j] ,pd[k-1]+ 1); if ( a != 1 ) for ( int t = 0; t <= b; t ++ ) { if( dp[k-1][t] == true ) dp[j][t+1] = true ; } } } } bool yes = false; if( a != 1 ) for ( int d = a ; d <= b ; d ++ ) { if ( dp[n][d] == true ) { yes = true ; } } else { if ( pd[n] <= b ) yes = true ; } // cout << "YES" << '\n'; if( yes == false ) val |= ( 1ll << i); } cout << val << '\n'; } int main() { cin>> n >> a >> b; for( int i = 1; i <= n ; i ++ ) { cin >> v[i]; } solve2(); 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...