Submission #892419

#TimeUsernameProblemLanguageResultExecution timeMemory
892419I_FloPPed21Bank (IZhO14_bank)C++14
71 / 100
1047 ms25172 KiB
#include <bits/stdc++.h> using namespace std; int n, m ; int v[ 21 ], b [ 21 ] ; bool dp [21 ] [ 1200000 ]; int main() { cin >> n >> m ; for ( int i = 1; i <= n ; i ++ ) { cin >> v[ i ] ; } for ( int i = 1; i <= m ; i ++ ) cin >> b[ i ] ; vector<int> posib [ n + 1] ; memset(dp, false, sizeof dp ); for ( int i = 1 ; i <= n ; i ++ ) { for ( int j = 0 ; j < ( 1 << m ) ; j ++ ) { int sum = 0 ; for ( int f = 1 ; f <= m ; f ++ ) { if ( j & ( 1 << ( f - 1 ) ) ) sum += b[ f ] ; } if ( sum == v[ i ] ) { posib [ i ] .push_back( j ) ; } } } dp [ 0 ][ 0 ] = true ; for ( int i = 1; i <= n ; i ++ ) { for ( int j = 0 ; j < ( 1 << m ) ; j ++ ) { if ( dp [ i - 1 ] [ j ] == true ) { for (int k = 0 ; k < posib [ i ] .size() ; k ++ ) { if ( (( j ) & ( posib [ i ][ k ] )) == 0 ) { int val = (posib [ i ][ k ] | ( j )); dp [ i ] [ val ] = true ; if ( i == n ) { cout << "YES" << '\n'; return 0 ; } } } } } } cout << "NO" << '\n'; return 0; }

Compilation message (stderr)

bank.cpp: In function 'int main()':
bank.cpp:53:37: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   53 |                 for  (int k = 0 ; k < posib [ i ] .size() ; k ++ )
      |                                   ~~^~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...