제출 #1267152

#제출 시각아이디문제언어결과실행 시간메모리
1267152cmiucBank (IZhO14_bank)C++20
100 / 100
80 ms8720 KiB
#include <iostream>

using namespace std;
const int N = 21;
int A[N], B[N], Mx[1<<N], Sum[1<<N], pre[N];

int main(){
	int n, m;
	cin>>n>>m;

	for (int i=0;i<n;i++)
		cin>>A[i], pre[i] = (i == 0 ? 0 : pre[i-1]) + A[i];
	for (int j=0;j<m;j++)
		cin>>B[j];

	for (int i=1;i<(1<<m);i++){
		int b = 31 - __builtin_clz(i & -i);
		Sum[i] = Sum[i - (1<<b)] + B[b];
		for (int j=0;j<m;j++){
			if ((1<<j) & i){
				int ind = Mx[i - (1<<j)];
				Mx[i] = max(Mx[i], ind + (A[ind] == Sum[i] - (ind == 0 ? 0 :  pre[ind - 1])));
			}
		}
	}
	cout<<(Mx[(1<<m) - 1] == n ? "YES\n" : "NO\n");
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...