Submission #83377

#TimeUsernameProblemLanguageResultExecution timeMemory
83377NordwayBank (IZhO14_bank)C++14
100 / 100
309 ms55112 KiB
#include<bits/stdc++.h> #define x first #define y second #define pb push_back #define mp make_pair #define up_b upper_bound #define low_b lower_bound #define sz(x) (int)x.size() #define all(v) v.begin(),v.end() #define boost ios_base::sync_with_stdio(0),cin.tie(0),cout.tie() using namespace std; typedef unsigned long long ll; typedef long double ld; typedef pair<int,int> pii; typedef pair<int,ll> pil; typedef pair<ll,int> pli; typedef pair<ll,ll> pll; const ll INF = 1e18; const int inf = INT_MAX; const ll mod = 1e9 + 7; const int pi = acos(-1); const int dx[4] = {0, 1, 0, 0}; const int dy[4] = {1, 0, 0, 0}; const int N = 21; const int MAXN = 1e6 + 1; int n, m; int a[N], b[N], sum[(1 << N)], used[N][(1 << N)]; vector < int > g[N]; void calc(int v, int mask){ if(v == n + 1){ cout << "YES"; exit(0); } if(used[v][mask])return; used[v][mask] = 1; for(int i = 0; i < sz(g[v]); i++){ if(!(mask & g[v][i]))calc(v + 1, mask | g[v][i]); } } int main(){ cin >> n >> m; for(int i = 1; i <= n; i++){ cin >> a[i]; } for(int i = 0; i < m; i++){ cin >> b[i]; } for(int mask = 1; mask < (1 << m); mask++){ for(int i = 0; i < m; i++){ if((mask >> i) & 1)sum[mask] += b[i]; } } for(int i = 1; i <= n; i++){ for(int mask = 1; mask < (1 << m); mask++){ if(a[i] == sum[mask])g[i].pb(mask); } } calc(1, 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...