제출 #1284417

#제출 시각아이디문제언어결과실행 시간메모리
1284417limon4ick은행 (IZhO14_bank)C++20
19 / 100
64 ms932 KiB
/*#pragma GCC optimize("Ofast,no-stack-protector,unroint-loops,fast-math,O3") #pragma GCC optimize("Ofast") #pragma GCC target("avx,avx2,fma") #pragma GCC optimization("unroint-loops") #pragma ("reroint") */ #include <bits/stdc++.h> using namespace std; //#define int long long #define pb push_back #define ins insert #define F first #define S second const int mod = 1e9 + 7,N = 21,M = 1001; int a[N],b[N]; int n,m; vector<int>v[N]; int cnt[M],cntt[M]; bool ok = 0; void rec(int i){ if(i>n){ for(int l = 1;l<M;l++){ if(cnt[l]>cntt[l]) return; } ok = 1; return; } if(v[i].size()==0) return; int j = 0; int r = 0; for(auto x:v[i]){ r++; if(x==-1) { rec(i+1); for(int k = j;k<r;k++){ cnt[v[i][k]]--; } j = r + 1; continue; } cnt[x]++; } } signed main(){ //freopen("justcoding.in","r",stdin); //freopen("justcoding.out","w",stdout); std::ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n >> m; for(int i = 1;i<=n;i++) cin >> a[i]; for(int i = 1;i<=m;i++) {cin >> b[i];cntt[b[i]]++;} for(int i = 1;i<=n;i++){ for(int msk = 0;msk<(1 << m);msk++){ int sum = 0; for(int j = 1;j<=m;j++){ if((msk & (1 << (j-1)))) sum+=b[j]; } if(sum==a[i]){ for(int j = 1;j<=m;j++){ if((msk & (1 << (j-1)))) v[i].pb({b[j]}); } v[i].pb({-1}); } } } rec(1); if(ok) cout << "YES\n"; else cout << "NO\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...