Submission #887366

#TimeUsernameProblemLanguageResultExecution timeMemory
887366happypotter127Bank (IZhO14_bank)C++17
71 / 100
1008 ms32360 KiB
#include<bits/stdc++.h> using namespace std; bool dp[(1 << 20)+1][21]; long long res[(1 << 21)]; bool ok = false; long dept[50], money[50], pre[50], n, m; int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n >> m; for(long i = 1; i <= n; i++){ cin >> dept[i]; pre[i] = pre[i-1] + dept[i]; } for(long i = 0; i < m; i++) cin >> money[i]; for(long i = 0; i < (1 << m); i++){ dp[i][0] = true; for(long p = 0; p < m; p++){ if(i & (1 << p)){ res[i] = res[i] + money[p]; } } } for(long i = 1; i <= n; i++){ for(long j = 0; j < (1 << m); j++){ for(long p = 0; p < m; p++){ if(!(j & (1 << p))){ long u = j | (1 << p); if(dp[j][i] == true){ dp[u][i] = true; if(i == n) ok = true; } if(dp[j][i-1] == true){ if(res[u] - pre[i-1] == dept[i]){ dp[u][i] = true; if(i == n) ok = true; } } } } } } if(ok == true) cout << "YES"; else 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...