Submission #1138374

#TimeUsernameProblemLanguageResultExecution timeMemory
1138374AgageldiBank (IZhO14_bank)C++20
19 / 100
0 ms468 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define N 600005 #define pb push_back #define ff first #define ss second #define all(x) x.begin(),x.end() ll T, n, a[N], t, m, b[N], vis[N]; multiset <int> s; void solve(int x) { if(x == n + 1) { cout << "YES\n"; exit(0); } int pos[5000]; for(int i = 0; i <= a[x]; i++) { pos[i] = 0; } pos[0] = 1; for(auto i : s) { for(int k = a[x]; k >= 0; k--) { if(pos[k] != 0 && pos[k + i] == 0) pos[k + i] = i; } } if(!pos[a[x]]) return; vector <int> v; int tt = a[x]; while(tt > 0) { v.pb(pos[tt]); s.erase(s.find(pos[tt])); tt -= pos[tt]; } solve(x + 1); for(auto i:v) { s.insert(i); } } int main () { cin >> n >> m; for(int i = 1; i <= n; i++) { cin >> a[i]; } for(int i = 1; i <= m; i++) { int x; cin >> x; s.insert(x); } solve(1); cout << "NO\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...