제출 #91063

#제출 시각아이디문제언어결과실행 시간메모리
91063YottaByteBank (IZhO14_bank)C++14
100 / 100
442 ms3088 KiB
#include <stdio.h>
#include <stdlib.h>
using namespace std;

const int N = 22;

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

void calc(int mask, int p = 0, int c = 0, int last = 0, int sum = 0)
{
	if(c == n)
	{
		puts("YES");
		exit(0);
	}
	
	for(int i = last; i < m; i++)
	{
		if(!( mask & ( 1 << i )))
		{
			if(!( p & ( 1 << i )))
			{
				int tomask = ( mask | ( 1 << i ));
				
				if(sum + b[i] < a[c])
					calc( tomask, p, c, i, sum + b[i]);
				
				else if(sum + b[i] == a[c])
				{
					dp[tomask] = c + 1;
					sum += b[i];
					calc( 0, tomask | p, c + 1, 0, 0);
				}
				
				else
					calc( tomask, p, c, i, sum + b[i]);
			}
		}
	}
}

main()
{
	scanf("%d %d", &n, &m);
	for(int i = 0; i < n; i++)
		scanf("%d", &a[i]);
	
	for(int i = 0; i < m; i++)
		scanf("%d", &b[i]);
	
	calc(0);
	puts("NO");
}

컴파일 시 표준 에러 (stderr) 메시지

bank.cpp:43:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main()
      ^
bank.cpp: In function 'int main()':
bank.cpp:45:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d", &n, &m);
  ~~~~~^~~~~~~~~~~~~~~~~
bank.cpp:47:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d", &a[i]);
   ~~~~~^~~~~~~~~~~~~
bank.cpp:50: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...