Submission #337781

#TimeUsernameProblemLanguageResultExecution timeMemory
337781boykutBank (IZhO14_bank)C++14
19 / 100
85 ms23660 KiB
#include <bits/stdc++.h> using namespace std; int dp[1 << 20][20]; signed main() { ios::sync_with_stdio(0); cin.tie(0); int n, m; cin >> n >> m; int a[n], b[m]; int sum = 0; for (int i = 0; i < n; i++) cin >> a[i], sum += a[i]; for (int i = 0; i < m; i++) cin >> b[i]; vector <int> can[sum+1]; for (int i = 0; i < (1 << m); i++) { int index = m - 1, num = i, s = 0; while (num) { if (num & 1) s += b[index]; index--; num >>= 1; } if (s == a[0]) { can[s].push_back(i); } } for (int i = 0; i < can[a[0]].size(); i++) { dp[can[a[0]][i]][0] = 1; } bool ok = false; for (int i = 1; i < n; i++) { int find = 0; for (int mask = 0; mask < (1 << m); mask++) { if (!dp[mask][i - 1]) continue; for (int el : can[a[i]]) { if ((mask & el) == 0) dp[mask | el][i] = 1, find = 1; } } if (find == 0) break; } for (int mask = 0; mask < (1 << m); mask++) { if (dp[mask][n - 1]) ok = true; } ok ? cout << "YES\n" : cout << "NO\n"; return 0; }

Compilation message (stderr)

bank.cpp: In function 'int main()':
bank.cpp:30:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   30 |    for (int i = 0; i < can[a[0]].size(); i++) {
      |                    ~~^~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...