Submission #1025406

#TimeUsernameProblemLanguageResultExecution timeMemory
1025406ef10Bank (IZhO14_bank)C++17
71 / 100
1043 ms8628 KiB
// Source: https://usaco.guide/general/io #include <bits/stdc++.h> using namespace std; int N,M; int A[21]; int B[21]; int dp[1<<20][2]; int main() { cin >> N >> M; for (int i = 1; i <= N; i++) { cin >> A[i]; } for (int i = 0; i < M; i++) { cin >> B[i]; } for (int i = 0; i < (1<<M); i++) { for (int j = 0; j <= 1; j++) { dp[i][j] = -1; } } dp[0][0] = 0; for (int i = 0; i < (1<<M); i++) { dp[i][0]=0; for (int k = 0; k < M; k++) { if (i&(1<<k)) { dp[i][0] += B[k]; } } } int ind; for (int i = 1; i <= N; i++) { ind = i % 2; int oi = (i+1) % 2; for (int j = 0; j < (1 << M); j++) { for (int k = 0; k < M; k++) { if (!(j&(1<<k))) continue; if (dp[j&~(1<<k)][ind] >= 0) { dp[j][ind] = dp[j&~(1<<k)][ind] + B[k]; } if (dp[j&~(1<<k)][oi] < 0) continue; if (dp[j&~(1<<k)][oi] + B[k] == A[i]) { dp[j][ind] = 0; } } } for (int i = 0; i < (1<<M); i++) { dp[i][oi] = -1; } } for (int i = 0; i < (1<<M); i++) { if (dp[i][ind] >= 0) { cout << "YES" << endl; return 0; } } cout << "NO" << endl; }

Compilation message (stderr)

bank.cpp: In function 'int main()':
bank.cpp:33:6: warning: 'ind' may be used uninitialized in this function [-Wmaybe-uninitialized]
   33 |  int ind;
      |      ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...