Submission #362751

#TimeUsernameProblemLanguageResultExecution timeMemory
362751ritul_kr_singhBank (IZhO14_bank)C++17
71 / 100
1113 ms172780 KiB
#include <bits/stdc++.h> using namespace std; #define int long long void prt(int i, int m){ for(int j=0; j<m; ++j){ cout << bool(i & (1<<j)); } cout << "\n"; } signed main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int n, m; cin >> n >> m; int a[n], b[m], pre[n+1]; for(int& i : a) cin >> i; for(int& i : b) cin >> i; pre[0] = 0; for(int i=1; i<=n; ++i) pre[i] = pre[i-1]+a[i-1]; int lim = (1<<m); int dp[n+1][lim]; for(int i=0; i<lim; ++i){ dp[0][i] = 1; for(int j=1; j<=n; ++j){ dp[j][i] = 0; } } int ok = 0; for(int i=1; i<=n; ++i){ for(int j=0; j<lim; ++j){ int sum = 0; for(int k=0; k<m; ++k){ if(j&(1<<k)){ sum += b[k]; } } if(sum==pre[i]){ for(int k=0; k<m; ++k){ if(j&(1<<k)){ if(dp[i-1][j-(1<<k)]){ } dp[i][j] |= dp[i-1][j-(1<<k)]; } } } if(dp[i][j]){ for(int k=0; k<m; ++k){ if(!(j&(1<<k))){ dp[i][j+(1<<k)] = 1; } } } if(i==n) ok |= dp[i][j]; } } cout << (ok ? "YES\n" : "NO\n"); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...