Submission #93829

#TimeUsernameProblemLanguageResultExecution timeMemory
93829dalgerokBank (IZhO14_bank)C++14
100 / 100
125 ms8696 KiB
#include<bits/stdc++.h> using namespace std; const int N = 30, M = 21; int n, m, a[N], b[N], sum[(1 << M)], dp[(1 << M)]; int main(){ ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin >> n >> m; for(int i = 1; i <= n; i++){ cin >> a[i]; a[i] += a[i - 1]; } for(int i = 0; i < m; i++){ cin >> b[i]; } for(int mask = 0; mask < (1 << m); mask++){ if(dp[mask] == n){ return cout << "YES", 0; } for(int i = 0; i < m; i++){ if((mask >> i) & 1){ continue; } sum[(mask ^ (1 << i))] = sum[mask] + b[i]; if(a[dp[mask] + 1] == sum[mask] + b[i]){ dp[(mask ^ (1 << i))] = max(dp[(mask ^ (1 << i))], dp[mask] + 1); } else{ dp[(mask ^ (1 << i))] = max(dp[(mask ^ (1 << i))], dp[mask]); } } } cout << "NO"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...