제출 #672197

#제출 시각아이디문제언어결과실행 시간메모리
672197Cutebol은행 (IZhO14_bank)C++17
100 / 100
163 ms61460 KiB
#include <bits/stdc++.h> using namespace std; //void fopn(string name){freopen((name+".in").c_str(),"r",stdin); freopen((name+".out").c_str(),"w",stdout);} #define Scaramouche ios_base::sync_with_stdio(0) ; cin.tie(0) ; cout.tie(0); #define int long long #define itn int #define endl "\n" #define ff first #define ss second const int N = 2e5 + 5 ; const int mod = 1e9 + 7 ; const int inf = 1e12 ; int n , m ; bool vis[23][2000000] ; vector <int> vec[2000000] ; int a[23] , b[23] ; void rec( int ind , int cur ){ if ( ind == n + 1 ){ cout << "YES" ; exit(0) ; } vis[ind][cur] = 1 ; for ( auto i : vec[ind] ){ if ( (cur & i) == 0 && (!vis[ind+1][cur^i]) ) rec ( ind + 1 , cur ^ i ) ; } } void solve(){ cin >> n >> m ; for ( int i = 1 ; i <= n ; i ++ ) cin >> a[i] ; for ( int i = 1 ; i <= m ; i ++ ) cin >> b[i] ; for ( int i = 1 ; i < ( 1 << m ) ; i ++ ){ int sum = 0 ; for ( int j = 0 ; j < m ; j ++ ) if ( i & ( 1 << j ) ) sum += b[j+1] ; for ( int j = 1 ; j <= n ; j ++ ){ if ( a[j] == sum ) vec[j].push_back(i) ; } } rec( 1 , 0 ) ; cout << "NO" ; } signed main(){ // fopn("talent") ; // Scaramouche ; int t = 1 ; // cin >> t ; while ( t -- ) solve() ; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...