Submission #884991

#TimeUsernameProblemLanguageResultExecution timeMemory
884991parlimoosBank (IZhO14_bank)C++17
46 / 100
49 ms39260 KiB
//Be Name KHODA #pragma GCC optimize("Ofast") #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; #define pb push_back #define pp pop_back #define cl clear #define bg begin #define lb lower_bound #define ub upper_bound #define arr(x) array<int , x> #define endl '\n' int n , m; vector<int> a , b; int times[(1 << 22)][2]; int dp[22][(1 << 22)]; bool oks[22][(1 << 22)]; void init(){ for(int i = 0 ; i < n ; i++){ for(int msk = 0 ; msk < (1 << m) ; msk++){ int sm = 0; for(int j = 0 ; j < m ; j++) if((msk >> j) & 1) sm += b[j]; if(sm == a[i]){ oks[i][msk] = 1; } } } } void f(){ for(int j = 0 ; j < (1 << m) ; j++){ if(oks[0][j]){ dp[0][j] = 1; // cout << 0 << " " << tour[j] << "..\n"; } } for(int i = 1 ; i < n ; i++){ for(int msk = 0 ; msk < (1 << m) ; msk++){ if(dp[i - 1][msk] == 1){ int d = ((~msk) & ((1 << m) - 1)); dp[i][d] = 1; } } for(int msk = (1 << m) - 1 ; msk >= 0 ; msk--){ for(int j = 0 ; j < m ; j++){ if(!((msk >> j) & 1) and dp[i][msk ^ (1 << j)] == 1) dp[i][msk] = 1; } } for(int j = 0 ; j < (1 << m) ; j++){ if((dp[i][j] >= 1) and oks[i][j]) dp[i][j] = 1; else dp[i][j] = 0; } } for(int msk = 0 ; msk < (1 << m) ; msk++){ if(dp[n - 1][msk] == 1){ cout << "YES"; exit(0); } } cout << "NO"; } int main(){ ios::sync_with_stdio(0); cin.tie(0); cin >> n >> m; for(int i = 0 ; i < n ; i++){ int d; cin >> d; a.pb(d); } for(int i = 0 ; i < m ; i++){ int d; cin >> d; b.pb(d); } init(); f(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...