Submission #1025508

#TimeUsernameProblemLanguageResultExecution timeMemory
1025508ef10Bank (IZhO14_bank)C++17
19 / 100
74 ms8560 KiB
// Source: https://usaco.guide/general/io #include <bits/stdc++.h> using namespace std; int N,M; int A[21]; int B[21]; pair<int,int> dp[1<<20]; int main() { cin >> N >> M; for (int i = 1; i <= N; i++) { cin >> A[i]; } sort(A+1,A+N+1); for (int i = 0; i < M; i++) { cin >> B[i]; } sort(B,B+M); for (int i = 0; i < (1<<M); i++) { dp[i] = make_pair(-1,-1); } dp[0] = make_pair(0,0); //for (int i = 1; i <= N; i++) { 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)].first >= 0 && dp[j&~(1<<k)].first < N) { int i = dp[j&~(1<<k)].first; int r = dp[j&~(1<<k)].second + B[k]; if (r==A[i+1]) { dp[j]=make_pair(i+1,0); } else { dp[j]=make_pair(i,r); } } } } //} for (int i = 0; i < (1<<M); i++) { if (dp[i].first == N) { cout << "YES" << endl; return 0; } } cout << "NO" << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...