제출 #1086864

#제출 시각아이디문제언어결과실행 시간메모리
1086864lhlephuocdao은행 (IZhO14_bank)C++14
100 / 100
105 ms57784 KiB
#pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") #include <bits/stdc++.h> using namespace std; const int Z = 20; // int N, M, A[Z], B[Z]; vector<int> S[Z]; set<int> dp[1<<Z]; // dp[s] : states of subset S #define MASK(k) (1LL << (k)) #define BIT(x, i) (((x) >> (i)) & 1) const int MAX = 20; int N, M; int a[MAX + 10], b[MAX + 10], l[MASK(MAX) + 10], f[MASK(MAX) + 10]; void solve(){ cin >> N >> M; for(int i=0; i<N; i++){ cin >> a[i]; } for(int i=0; i<M; i++){ cin >> b[i]; } memset(f, -1, sizeof f); f[0] = 0; for(int mask=0; mask < (1<<M); mask++) if(f[mask] != -1){ for(int i=0; i < M; i++) if(!(mask & (1<<i))){ int x = b[i] + l[mask]; if(x < a[f[mask]]){ f[mask | (1<<i)] = f[mask]; l[mask | (1<<i)] = x; } else if(x == a[f[mask]]){ f[mask | (1<<i)] = f[mask] + 1; l[mask | (1<<i)] = 0; } if(f[mask | (1<<i)] == N){ cout << "YES\n"; return; } } } cout << "NO\n"; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); solve(); /* 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 state = 1; state < (1 << M); state++) { int sum = 0; for (int i = 0; i < M; i++) if (state & (1 << i)) sum += B[i]; for (int i = 0; i < N; i++) if (sum == A[i]) { S[i].push_back(state); dp[1<<i].insert(state); } } //dp[0] = empty for (int s = 1; s < (1<<N); s++) { for (int i = 0; i < N; i++) { if (!(s & (1<<i)) || dp[s^(1<<i)].empty()) continue; for (auto cur_state : S[i]) for (auto prev_state : dp[s^(1<<i)]) { if (cur_state & prev_state) continue; dp[s].insert(cur_state | prev_state); } } if (!dp[(1<<N)-1].empty()) { // Early exit if found cout << "YES"; return 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...