input()
people = list(map(int, input().split()))
bank = list(map(int, input().split()))
ppl_satisfied = [0] * (1 << len(bank))
left_over = [0] * (1 << len(bank))
for cur_subset in range(1, 1 << len(bank)):
for elem in range(len(bank)):
if cur_subset & (1 << elem):
prev_subset = cur_subset ^ (1 << elem)
target_val = people[ppl_satisfied[prev_subset]]
new_amount = left_over[prev_subset] + bank[elem]
if new_amount == target_val:
ppl_satisfied[cur_subset] = ppl_satisfied[prev_subset] + 1
left_over[cur_subset] = 0
elif new_amount < target_val:
ppl_satisfied[cur_subset] = ppl_satisfied[prev_subset]
left_over[cur_subset] = new_amount
if ppl_satisfied[cur_subset] == len(people):
print('YES')
exit()
print('NO')
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
34 ms |
18196 KB |
Output is correct |
2 |
Correct |
32 ms |
18176 KB |
Output is correct |
3 |
Correct |
39 ms |
19000 KB |
Output is correct |
4 |
Correct |
36 ms |
19208 KB |
Output is correct |
5 |
Correct |
376 ms |
35932 KB |
Output is correct |
6 |
Correct |
45 ms |
19380 KB |
Output is correct |
7 |
Correct |
43 ms |
19056 KB |
Output is correct |
8 |
Correct |
53 ms |
35924 KB |
Output is correct |
9 |
Correct |
327 ms |
35964 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
46 ms |
19008 KB |
Output is correct |
2 |
Incorrect |
43 ms |
19476 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
47 ms |
19584 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
34 ms |
18196 KB |
Output is correct |
2 |
Correct |
32 ms |
18176 KB |
Output is correct |
3 |
Correct |
39 ms |
19000 KB |
Output is correct |
4 |
Correct |
36 ms |
19208 KB |
Output is correct |
5 |
Correct |
376 ms |
35932 KB |
Output is correct |
6 |
Correct |
45 ms |
19380 KB |
Output is correct |
7 |
Correct |
43 ms |
19056 KB |
Output is correct |
8 |
Correct |
53 ms |
35924 KB |
Output is correct |
9 |
Correct |
327 ms |
35964 KB |
Output is correct |
10 |
Correct |
46 ms |
19008 KB |
Output is correct |
11 |
Incorrect |
43 ms |
19476 KB |
Output isn't correct |
12 |
Halted |
0 ms |
0 KB |
- |