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 |
|
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 |