Submission #37776

#TimeUsernameProblemLanguageResultExecution timeMemory
37776mirbek01Bank (IZhO14_bank)C++14
71 / 100
1082 ms5452 KiB
# include <bits/stdc++.h> # define pb push_back # define fr first # define sc second # define mk make_pair using namespace std; const int inf = 1e9 + 7; const int N = 1e6 + 5; typedef long long ll; int n, m, a[N], b[N], pw[100], sum[1 << 20]; vector <int> v[30]; int main() { pw[0] = 1; for(int i = 1; i < 30; i ++) pw[i] = pw[i - 1] * 2; cin >> n >> m; for(int i = 0; i < n; i ++) cin >> a[i]; for(int i = 0; i < m; i ++) cin >> b[i]; for(int mask = 0; mask < pw[m]; mask ++) { for(int j = 0; j < m; j ++) { int bit = (mask & pw[j]); if(bit) sum[mask] += b[j]; } } for(int i = 0; i < n; i ++) { if(i == 0) { for(int mask = 0; mask < pw[m]; mask ++) if(sum[mask] == a[i]) v[i].pb(mask); } else { for(int mask = 0; mask < pw[m]; mask ++) { for(int j = 0; j < v[i - 1].size(); j ++) { int musk = v[i - 1][j], s = sum[mask]; if((musk & mask) == 0 && s == a[i]) v[i].pb(mask | musk); } } } } if(v[n - 1].size()) puts("YES"); else puts("NO"); }

Compilation message (stderr)

bank.cpp: In function 'int main()':
bank.cpp:54:42: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
                         for(int j = 0; j < v[i - 1].size(); j ++)
                                        ~~^~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...