Submission #5429881


Source Code Expand

def canMake(num, val):
    if memo[num][val] != -1:
        if memo[num][val] == 1:
            return 1
        else:
            return 0
    if num == 0:
        if val == 0:
            return True
        return 0
    if val - p[num-1] < 0:
        if canMake(num-1, val):
            memo[num][val] = 1
            return 1
        else:
            memo[num][val] = 0
            return 0
    else:
        if canMake(num-1, val-p[num-1]) or canMake(num-1, val):
            memo[num][val] = 1
            return 1
        else:
            memo[num][val] = 0
            return 0

n = int(input())
p = list(map(int, input().split()))

memo = [[-1] * (sum(p)+1) for _ in range(n+1)]

count = 0
for i in range(sum(p)+1):
    if canMake(n, i):
        count += 1

print(count)

Submission Info

Submission Time
Task A - コンテスト
User suika_p
Language Python (3.4.3)
Score 2
Code Size 816 Byte
Status AC
Exec Time 172 ms
Memory 7412 KB

Judge Result

Set Name All
Score / Max Score 2 / 2
Status
AC × 5
Set Name Test Cases
All 00, 01, 02, 90, 91
Case Name Status Exec Time Memory
00 AC 20 ms 3064 KB
01 AC 91 ms 4084 KB
02 AC 172 ms 7412 KB
90 AC 17 ms 3064 KB
91 AC 17 ms 3064 KB