Submission #91105

#TimeUsernameProblemLanguageResultExecution timeMemory
91105antimirageBank (IZhO14_bank)C++14
25 / 100
1074 ms1652 KiB
#include <bits/stdc++.h>
  
#define fr first
#define sc second
#define mk make_pair
#define pb emplace_back
#define all(s) s.begin(), s.end()
 
using namespace std;

const int N = 25;

int n, m, a[N], b[N], dp[N][1 << 12], sum[1 << 12];

main()
{
	cin >> n >> m;
	for (int i = 1; i <= n; i++)
		scanf("%d", &a[i]);
	for (int i = 1; i <= m; i++)
		scanf("%d", &b[i]);
		
	for (int mask = 0; mask < (1 << m); mask++)
	{
		for (int j = 1; j <= m; j++)
		{
			if ( mask & (1 << (j - 1)) )
				sum[mask] += b[j];
		}
	}
		
	dp[0][0] = 1;	
	
	for (int i = 1; i <= n; i++)
	{
		for (int mask1 = 0; mask1 < (1 << m); mask1++)
		{
			for (int mask2 = 0; mask2 < (1 << m); mask2++)
			{
				if ( ( (mask1 & mask2) == mask2) && dp[i - 1][mask1 - mask2] && sum[mask2] == a[i] ){
					dp[i][mask1] = 1;
					break;
				}
			}
		}
	}
	for (int mask = 0; mask < (1 << m); mask++)
	{
		if (dp[n][mask]){
			puts("YES");
			return 0;
		}
	}
	puts("NO");
}

Compilation message (stderr)

bank.cpp:15:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main()
      ^
bank.cpp: In function 'int main()':
bank.cpp:19:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d", &a[i]);
   ~~~~~^~~~~~~~~~~~~
bank.cpp:21:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d", &b[i]);
   ~~~~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...