結果

問題 No.2956 Substitute with Average
ユーザー dp_ijkdp_ijk
提出日時 2024-11-09 00:00:13
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 962 ms / 3,000 ms
コード長 906 bytes
コンパイル時間 333 ms
コンパイル使用メモリ 82,404 KB
実行使用メモリ 237,176 KB
最終ジャッジ日時 2024-11-09 00:00:31
合計ジャッジ時間 17,803 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 42 ms
54,144 KB
testcase_01 AC 43 ms
54,272 KB
testcase_02 AC 42 ms
54,272 KB
testcase_03 AC 42 ms
53,888 KB
testcase_04 AC 44 ms
54,144 KB
testcase_05 AC 47 ms
60,416 KB
testcase_06 AC 43 ms
54,784 KB
testcase_07 AC 42 ms
54,400 KB
testcase_08 AC 42 ms
53,760 KB
testcase_09 AC 48 ms
61,440 KB
testcase_10 AC 901 ms
230,288 KB
testcase_11 AC 918 ms
228,164 KB
testcase_12 AC 865 ms
229,168 KB
testcase_13 AC 883 ms
229,960 KB
testcase_14 AC 909 ms
229,188 KB
testcase_15 AC 877 ms
232,196 KB
testcase_16 AC 906 ms
229,876 KB
testcase_17 AC 901 ms
229,428 KB
testcase_18 AC 794 ms
237,176 KB
testcase_19 AC 830 ms
216,244 KB
testcase_20 AC 864 ms
226,752 KB
testcase_21 AC 830 ms
218,880 KB
testcase_22 AC 812 ms
235,668 KB
testcase_23 AC 921 ms
221,136 KB
testcase_24 AC 958 ms
196,692 KB
testcase_25 AC 885 ms
228,316 KB
testcase_26 AC 962 ms
192,304 KB
testcase_27 AC 956 ms
214,108 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

from collections import defaultdict

from itertools import accumulate
N = int(input())
A = list(map(int, input().split()))


def helper(A):
   N = len(A)
   W = list(accumulate(A, initial=0))
   dp = [0]*(30+1)
   for x in range(1, 31):
      d = defaultdict(int)
      term = 0
      for i in range(N):
         t = W[i+1] - (i+1) * x
         if A[i] == x:
            term += d[t]
         s = W[i] - i*x
         d[s] += 1
      dp[x] += term
   return sum(dp)


def resolve(A):
   N = len(A)
   W = list(accumulate(A, initial=0))
   dp = [0]*(30+1)
   for x in range(1, 31):
      d = defaultdict(int)
      term = 0
      for i in range(N):
         if A[i] != x: continue
         t = W[i+1] - (i+1) * x
         term += d[t]
         s = W[i] - i*x
         d[s] += 1
      dp[x] += term
   return sum(dp)


ans = N*(N-1) // 2
ans -= helper(A)
ans -= helper(A[::-1])
ans += resolve(A)
print(ans+1)
0