Submission #1089182

#TimeUsernameProblemLanguageResultExecution timeMemory
1089182vjudge1Bank (IZhO14_bank)C++17
71 / 100
1082 ms604 KiB
//don't copy pls) /*TAAK ZDES NADO RECURSIU PISAT*/ //I'm not in the danger i am the DANGER #include "bits/stdc++.h" #include <ext/pb_ds/assoc_container.hpp> #define ll long long #define pb push_back #define int long long #define F first #define S second #define all(x) (x).begin(), (x).end() #define pii pair<int,int> #define sigma signed using namespace std; using namespace __gnu_pbds; const int N = 1e3 + 5; int mod = 1e9 + 7; const int INF = 1e18; int n,m,a[N],b[N],dp[N][N],used[N]; int rec(int last = 0){ if(last == n) return 1; last++; int x = a[last]; int ans = 0; for(int mask = 0 ; mask < (1 << m) ; mask++){ if(ans) break; int sum = 0; bool oknt = 0; for(int i = 1 ; i <= m ; i++){ if(((mask >> (i - 1)) & 1) && used[i]){ oknt = 1; break; } } if(oknt) continue; for(int i = 1 ; i <= m ; i++){ if(((mask >> (i - 1)) & 1)){ sum += b[i]; } } // cout << '\n'; // cout << sum << '\n'; if(sum == x){ for(int i = 1 ; i <= m ; i++){ if(((mask >> (i - 1)) & 1)){ used[i] = 1; } } ans = max(rec(last) , ans); for(int i = 1 ; i <= m ; i++){ if(((mask >> (i - 1)) & 1)){ used[i] = 0; } } } } last--; return ans; } void Gold(){ cin >> n >> m; for(int i = 1 ; i <= n ; i++){ cin >> a[i]; } for(int i = 1 ; i <= m ; i++){ cin >> b[i]; } if(n == 1){ int x = a[1]; for(int i = 1 ; i <= m ; i++) dp[i][0] = 1; for(int i = 1 ; i <= m ; i++){ for(int j = 1 ; j <= x ; j++){ if(dp[i][j]) break; dp[i][j] = max(dp[i][j] , dp[i - 1][j]); if(j >= b[i]){ dp[i][j] = max(dp[i][j] , dp[i - 1][j - b[i]]); } } } for(int i = 1 ; i <= m ; i++){ if(dp[i][x]){ cout << "YES\n"; return; } } cout << "NO\n"; return; } int ans = rec(); if(ans){ cout << "YES\n"; return; } cout << "NO"; } sigma main(){ //freopen("txt.in","r",stdin); //freopen("txt.out","w",stdout); ios_base::sync_with_stdio(0); cin.tie(0); srand(time(0)); int TT = 1; // cin >> TT; for(int i = 1 ; i <= TT ; i++){ //cout << "Case " << i << ": "; Gold(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...