제출 #899549

#제출 시각아이디문제언어결과실행 시간메모리
899549nasir_bashirov은행 (IZhO14_bank)C++11
100 / 100
86 ms8792 KiB
#pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") #include <bits/stdc++.h> using namespace std; #define db long double #define ll long long #define pii pair<int, int> #define pll pair<ll, ll> #define vi vector<int> #define vl vector<ll> #define vii vector<pii> #define vll vector<pll> #define endl '\n' #define all(x) x.begin(), x.end() #define fastio\ ios_base::sync_with_stdio(0);\ cin.tie(0);\ cout.tie(0)\ const int inf = -1e9; int a[25], b[25], n, m; vii dp((1 << 20) + 5, {0, 0}); signed main(){ fastio; cin >> n >> m; for(int i = 1; i <= n; i++){ cin >> a[i]; } for(int i = 1; i <= m; i++){ cin >> b[i]; } for(int mask = 1; mask < (1 << m); mask++){ for(int j = 0; j < m; j++){ if((1 << j) & mask){ int out = mask ^ (1 << j); if(a[dp[out].first + 1] == dp[out].second + b[j + 1]){ if(dp[mask].first < dp[out].first + 1) dp[mask] = {dp[out].first + 1, 0}; } else{ if(dp[mask].first <= dp[out].first) dp[mask] = {dp[out].first, dp[out].second + b[j + 1]}; } } } } int mx = 0; for(int mask = 0; mask < (1 << m); mask++){ mx = max(dp[mask].first, mx); } if(mx == n) 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...