Submission #31262554


Source Code Expand

n = int(input())
a = list(map(int, input().split()))
dp = [[0] * 21 for i in range(n - 1)]
# dp[i][j] = i 番目までの符号を入れて,その計算値が j になる場合の数
dp[0][a[0]] = 1
for i in range(1, n - 1):
    for j in range(0, 21):
        if 0 <= j - a[i] <= 20:
            dp[i][j] += dp[i - 1][j - a[i]] # 直前に足し算を行った場合
        if 0 <= j + a[i] <= 20:
            dp[i][j] += dp[i - 1][j + a[i]] # 直前に引き算を行った場合
print(dp[n - 2][a[-1]])

Submission Info

Submission Time
Task D - 1 年生 (A First Grader)
User Pro_ktmr
Language PyPy3 (7.3.0)
Score 100
Code Size 518 Byte
Status AC
Exec Time 63 ms
Memory 65216 KiB

Judge Result

Set Name set01 set02 set03 set04 set05
Score / Max Score 20 / 20 20 / 20 20 / 20 20 / 20 20 / 20
Status
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
Set Name Test Cases
set01 data1
set02 data2
set03 data3
set04 data4
set05 data5
Case Name Status Exec Time Memory
data1 AC 63 ms 62100 KiB
data2 AC 52 ms 62312 KiB
data3 AC 53 ms 62084 KiB
data4 AC 60 ms 65108 KiB
data5 AC 55 ms 65216 KiB