Submission #1053737

#TimeUsernameProblemLanguageResultExecution timeMemory
1053737sssamuiBank (IZhO14_bank)C++17
100 / 100
75 ms8660 KiB
#include <iostream>
#include <cstdio>
#include <vector>
#include <cmath>
using namespace std;

const int MXN = 20;

int n, m, sz;
vector<int> sal(MXN), nts(MXN);

bool solve()
{
	vector<int> lft(sz, 0), dp(sz, 0);
	for (int i = 0; i < n; i++) cin >> sal[i];
	for (int i = 0; i < m; i++) cin >> nts[i];
	for (int msk = 1; msk < sz; msk++) for (int bit = 0; bit < m; bit++) if (msk & (1 << bit)) if (dp[msk ^ (1 << bit)] >= dp[msk])
	{
		dp[msk] = dp[msk ^ (1 << bit)];
		lft[msk] = lft[msk ^ (1 << bit)] + nts[bit];
		if (lft[msk] == sal[dp[msk]])
		{
			lft[msk] = 0;
			dp[msk]++;
			if (dp[msk] == n) return true;
		}
	}

	return false;
}

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);

	cin >> n >> m;
	sz = 1 << m;
	cout << (solve() ? "YES" : "NO");
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...