Submission #1098137

#TimeUsernameProblemLanguageResultExecution timeMemory
1098137vjudge1Bank (IZhO14_bank)C++17
71 / 100
1083 ms67912 KiB
//order_of_key(k): Number of items strictly smaller than k .
//find_by_order(k): K-th element in a set (counting from zero).

#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")

#include <bits/stdc++.h>

#define len(x) (int)x.size()
#define pb push_back

using namespace std;

const int N = 2e5 + 7;

int a[1001], b[1001];	

int cnt[N * 10];


signed main() {
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);
	
	int n, m;
	bool ans = 0;
	cin >> n >> m;
	set <int> s;
	s.insert(0);
	for (int i = 1; i <= n; i++) cin >> a[i];
	for (int i = 0; i < m; i++) cin >> b[i];
	for (int i = 1; i <= n; i++) {
		vector <int> nw;
		for (int mask = 1; mask < (1 << m); mask++) {
			int sum = 0;
			for (int j = 0; j < m; j++) sum += b[j] * ((mask >> j) & 1);
			if (sum != a[i]) continue;
//			cout << sum << '\n';
			for (int it: s) if (!(it & mask)) nw.pb((it | mask));
				 
		}
		s.clear();
		for (int it: nw) s.insert(it);
	}
	cout << (len(s) ? "YES" : "NO");

}

Compilation message (stderr)

bank.cpp: In function 'int main()':
bank.cpp:26:7: warning: unused variable 'ans' [-Wunused-variable]
   26 |  bool ans = 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...