Submission #1204421

#TimeUsernameProblemLanguageResultExecution timeMemory
1204421sopaipilla은행 (IZhO14_bank)C++20
71 / 100
1028 ms448 KiB
#include <bits/stdc++.h> #define pb push_back #define fst first #define snd second using namespace std; int n, m, ans=0; array<int,20> a, b, pf; array<pair<int,set<int>>,20> subset; void search(int i, int j) { if(ans) return; int qtd=subset[i].fst; if(qtd==pf[i]) { if(i==(n-1)) { ans=1; return; } subset[i+1]=subset[i]; search(i+1,0); } else if(qtd<pf[i]) { if(j==m) return; search(i,j+1); if(subset[i].snd.find(j)==subset[i].snd.end()) { subset[i].snd.insert(j); subset[i].fst+=b[j]; search(i,j+1); subset[i].snd.erase(j); subset[i].fst-=b[j]; } } } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cin >> n >> m; for(int i=0; i<n; ++i) { cin >> a[i]; if(!i) pf[i]=a[i]; else pf[i] = pf[i-1]+a[i]; } for(int i=0; i<m; ++i) cin >> b[i]; if(n>m) { cout << "NO"; return 0; } search(0,0); if(ans) 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...