提出 #31262554


ソースコード 拡げる

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

提出情報

提出日時
問題 D - 1 年生 (A First Grader)
ユーザ Pro_ktmr
言語 PyPy3 (7.3.0)
得点 100
コード長 518 Byte
結果 AC
実行時間 63 ms
メモリ 65216 KiB

ジャッジ結果

セット名 set01 set02 set03 set04 set05
得点 / 配点 20 / 20 20 / 20 20 / 20 20 / 20 20 / 20
結果
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
セット名 テストケース
set01 data1
set02 data2
set03 data3
set04 data4
set05 data5
ケース名 結果 実行時間 メモリ
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