제출 #17969

#제출 시각아이디문제언어결과실행 시간메모리
17969Adilkhan은행 (IZhO14_bank)C++98
100 / 100
228 ms26496 KiB
#include <bits/stdc++.h> #define pb push_back #define endl "\n" #define mp make_pair #define fi first #define se second #define all(x) x.begin(), x.end() #define fname "" #define sz(x) (int)(x.size()) typedef long long ll; using namespace std; const ll N = (ll)(5e5) + 322; const ll INF = (ll)(1e9); const ll mod = (ll)(1e9) + 7; const double eps = 1e-9; int n, m, sum; vector <int> v[N], a, b; bool u[21][(1 << 20) + 322]; void calc(int x, int pmsk) { if (x == n) { cout << "YES"; exit(0); } if (u[x][pmsk]) return; u[x][pmsk] = 1; for (auto it : v[x]) { if (it & pmsk) continue; calc(x + 1, pmsk ^ it); } } int main () { ios_base :: sync_with_stdio (false); cin.tie(0); // freopen(fname".in", "r", stdin); //freopen(fname".out", "w", stdout); cin >> n >> m; for (int i = 1; i <= n; ++i) {int x; cin >> x; a.pb(x);} for (int i = 1; i <= m; ++i) {int x; cin >> x; b.pb(x);} for (int mask = 0; mask < (1 << m); ++mask) { sum = 0; for (int i = 0; i < m; ++i) { if ((1 << i) & mask) { sum += b[i]; } } for (int i = 0; i < n; ++i) { if (sum == a[i]) { v[i].pb(mask); } } } calc(0, 0); cout << "NO"; 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...