제출 #892835

#제출 시각아이디문제언어결과실행 시간메모리
892835LinhLewLew은행 (IZhO14_bank)C++17
100 / 100
102 ms8972 KiB
// PhuThuyRuntime <3 // A secret makes a woman woman #include <bits/stdc++.h> using namespace std; #define pb push_back #define fo(i, l, r) for(int i = l; i <= r; i++) #define foi(i, l, r) for(int i = l; i >= r; i--) #define elif else if #define el cout << "\n"; #define pii pair<int, int> #define pli pair<ll, int> #define pll pair<ll, ll> #define pil pair<int, ll> #define fi first #define se second #define in(x) freopen(x, "r", stdin) #define out(x) freopen(x, "w", stdout) #define ll long long #define ull unsigned long long #define pob pop_back #define bs binary_search #define vi vector<int> #define vii vector<pair<int, int>> #define getbit(i, j) (i >> j) & 1 #define offbit(i, j) (1 << j) ^ i #define onbit(i, j) (1 << j) | i const int N = 1e5 + 2; const ll mod = 1e9 + 7; const int inf = INT_MAX; const int base = 31; const long double EPS = 1e-9; const long double pi = acos(-1.0); int n, m, a[N], b[N]; void inp(){ cin >> n >> m; fo(i, 1, n) cin >> a[i - 1]; fo(i, 1, m) cin >> b[i - 1]; } pii dp[1 << 20]; void sol(){ fo(mask, 1, (1 << m) - 1){ fo(i, 0, m - 1){ if(getbit(mask, i)){ auto it = dp[offbit(mask, i)]; if(it.se + b[i] == a[it.fi]){ it.fi++; it.se = 0; } else it.se += b[i]; if(it.fi == n){ cout << "YES\n"; return; } dp[mask] = max(dp[mask], it); } } } cout << "NO"; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); inp(); sol(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...