Submission #892457

#TimeUsernameProblemLanguageResultExecution timeMemory
892457I_FloPPed21Bank (IZhO14_bank)C++14
71 / 100
362 ms262144 KiB
#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")
#pragma GCC optimization ("unroll-loops")
int n, m ;
int v[ 22 ], b [ 22 ] ;


vector<int> posib [ 22 ] ;
vector<int> posixor[ 22 ] ;
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin >> n >> m ;

    for ( int i = 1; i <= n  ; i ++ )
    {
        cin >> v[ i ] ;
    }

    for ( int i = 1; i <= m  ; i ++ )
        cin >> b[ i ] ;


    posixor [ 1 ] .push_back(0);


    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 ) ;

            }
        }

        if ( posib[ i ] .size() == 0 || posixor [ i ] .size() == 0  )
        {
            cout << "NO" << '\n';
            return 0 ;
        }

        for ( int d = 0 ; d < posixor [ i ] .size() ; d ++ )
        {
            long long j = posixor [ i ][ d ] ;

            for  (int k = 0 ; k < posib [ i ] .size() ; k ++ )
            {


                if ( (( j ) & ( posib [ i ][ k ] )) == 0 )
                {


                    if ( i == n )
                    {
                        cout << "YES" << '\n';
                        return 0  ;
                    }

                    int val = (posib [ i ][ k ] | ( j  ));

                    posixor [ i + 1] .push_back(val);


                }
            }
        }
        posixor[i].clear();
        posib[i].clear();


    }
    cout << "NO" << '\n';

    return 0;
}

Compilation message (stderr)

bank.cpp:5: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
    5 | #pragma GCC optimization ("unroll-loops")
      | 
bank.cpp: In function 'int main()':
bank.cpp:55:29: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   55 |         for ( int d = 0 ; d < posixor [ i ] .size() ; d ++ )
      |                           ~~^~~~~~~~~~~~~~~~~~~~~~~
bank.cpp:59:33: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   59 |             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...