Submission #1319618

#TimeUsernameProblemLanguageResultExecution timeMemory
1319618yessimkhanBank (IZhO14_bank)C++20
52 / 100
302 ms327680 KiB
#include <bits/stdc++.h> #define ll long long #define ent '\n' #define pb push_back #define all(x) x.begin(),x.end() #define PRaim_bek_abi ios_base::sync_with_stdio(0);cin.tie(0); using namespace std; const int N = 1e5+5; const int MOD = 1e9+7; int n , m , a[N] , b[N]; set<int> dp[N]; vector<vector<int>> v[N]; void rec(int x , vector<int> g , int i){ if (x == 0){ v[i].pb(g); return; } for (auto to : dp[x]){ g.pb(to); rec(x - to , g , i); g.pop_back(); } } void get(int i , multiset<int>s){ if (i == n + 1){ cout << "YES"; exit(0); } for (auto g : v[i]){ multiset<int>nw = s; bool ok = 0; for (auto to : g){ auto it = nw.find(to); if (it != nw.end()) nw.erase(it); else { ok = 1; break; } } if (ok) continue; get(i + 1 , nw); } } void easy(){ cin >> n >> m; for (int i = 1; i <= n; i++){ cin >> a[i]; } multiset<int> st; for (int i = 1; i <= m; i++){ cin >> b[i]; st.insert(b[i]); } dp[0].insert(0); for (int k = 1; k <= n; k++){ for (int j = 1; j <= 1000; j++){ dp[j].clear(); } for (int i = 1; i <= m; i++){ for (int j = a[k]; j >= b[i]; j--){ if (dp[j - b[i]].size() == 0) continue; dp[j].insert(b[i]); } } if (dp[a[k]].size() == 0){ cout << "NO"; return; } rec(a[k] , {} , k); } get(1 , st); cout << "NO"; } signed main(){ PRaim_bek_abi int t=1; //cin>>t; while(t--) easy(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...