제출 #93042

#제출 시각아이디문제언어결과실행 시간메모리
93042Nodir_Bobiev은행 (IZhO14_bank)C++14
100 / 100
146 ms13548 KiB
// solved by bitmask # include <iostream> # include <vector> using namespace std; const int N = (1 << 21); int n, m, a[30], b[30], s[N],cnt[N]; vector < int > vc[30]; int main() { ios_base::sync_with_stdio(false); cin >> n >> m; for (int i = 1; i <= n; i++){ cin >> a[i]; a[i] += a[i - 1]; } for (int i = 0; i < m; i++) cin >> b[i]; for (int j = 0; j < (1 << m); j++) vc[__builtin_popcount(j)].push_back(j); for (int i = 0; i < m; i++){ for(auto mask: vc[i]){ for (int k = 0; k < m; k++){ if((mask & (1 << k)))continue; int msk = mask | (1 << k); s[msk] = s[mask] + b[k]; if(a[cnt[mask] + 1] == s[mask] + b[k]) cnt[msk] = max(cnt[msk], cnt[mask] + 1); else cnt[msk] = max(cnt[msk], cnt[mask]); if(cnt[msk] == n){ cout << "YES"; exit(0); } } } } cout << "NO"; return 0; } /* 1 5 8 4 2 5 1 3 2 6 9 10 5 4 8 6 3 11 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...