Submission #1319643

#TimeUsernameProblemLanguageResultExecution timeMemory
1319643yessimkhanBank (IZhO14_bank)C++20
100 / 100
254 ms2140 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 = 2e1+5; const int MOD = 1e9+7; int n , m , a[N] , b[N]; set<int> dp[1005][N]; multiset<int>s; void get(int i , int x){ if (i == n + 1){ cout << "YES"; exit(0); } if (x == 0){ get(i + 1 , a[i + 1]); return; } for (auto to : dp[x][i]){ auto it = s.find(to); if (it == s.end()) continue; s.erase(it); get(i , x - to); s.insert(to); } } void easy(){ cin >> n >> m; for (int i = 1; i <= n; i++){ cin >> a[i]; } for (int i = 1; i <= m; i++){ cin >> b[i]; s.insert(b[i]); } sort(b + 1 , b + 1 + m); for (int k = 1; k <= n; k++){ dp[0][k].insert(0); for (int i = 1; i <= m; i++){ for (int j = a[k]; j >= b[i]; j--){ if (dp[j - b[i]][k].size() == 0) continue; dp[j][k].insert(b[i]); } } if (dp[a[k]][k].size() == 0){ cout << "NO"; return; } } get(1 , a[1]); 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...