Submission #1262447

#TimeUsernameProblemLanguageResultExecution timeMemory
1262447lnt314은행 (IZhO14_bank)C++17
100 / 100
227 ms26140 KiB
#include <bits/stdc++.h>
#define ll long long
#define fi first
#define se second
using namespace std;
const int N=25,M=1<<20,K=2e4+5;
int a[N],b[N],n,m;
bool f[N][M];
int g[M];
vector<int> tk[K];
int main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	#define taskname ""
	if(fopen(taskname ".inp","r"))
	{
		freopen(taskname ".inp","r",stdin);
		freopen(taskname ".out","w",stdout);
	}
	cin>>n>>m;
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=0;i<m;i++) cin>>b[i];
	for(int cur=1;cur<(1<<m);cur++)
	{
		g[cur]=g[cur&(cur-1)]+b[__builtin_ctz(cur)];
		tk[g[cur]].emplace_back(cur);
	}
	for(int i=1;i<=n;i++)
		if(tk[a[i]].empty())
		{
			cout<<"NO";
			return 0;
		}
	f[0][0]=1;
	for(int i=0;i<n;i++)
	{
		for(int cur=0;cur<(1<<m);cur++)
		{
			if(!f[i][cur]) continue;
			for(int &nxt:tk[a[i+1]])
				f[i+1][cur|nxt]=((cur|nxt)==(cur^nxt));
		}
	}
	for(int i=0;i<(1<<m);i++)
		if(f[n][i])
		{
			cout<<"YES";
			return 0;
		}
	cout<<"NO";
}

Compilation message (stderr)

bank.cpp: In function 'int main()':
bank.cpp:18:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   18 |                 freopen(taskname ".inp","r",stdin);
      |                 ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
bank.cpp:19:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   19 |                 freopen(taskname ".out","w",stdout);
      |                 ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...