結果

問題 No.2931 Shibuya 109
ユーザー loop0919loop0919
提出日時 2024-10-02 00:52:37
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 1,376 ms / 4,000 ms
コード長 547 bytes
コンパイル時間 436 ms
コンパイル使用メモリ 82,488 KB
実行使用メモリ 185,816 KB
最終ジャッジ日時 2024-10-09 10:13:09
合計ジャッジ時間 15,434 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 1,131 ms
76,800 KB
testcase_01 AC 1,294 ms
184,664 KB
testcase_02 AC 1,253 ms
185,424 KB
testcase_03 AC 1,326 ms
184,912 KB
testcase_04 AC 1,376 ms
185,816 KB
testcase_05 AC 1,274 ms
184,768 KB
testcase_06 AC 1,219 ms
185,660 KB
testcase_07 AC 299 ms
125,184 KB
testcase_08 AC 971 ms
87,040 KB
testcase_09 AC 923 ms
123,520 KB
testcase_10 AC 1,023 ms
184,700 KB
testcase_11 AC 37 ms
52,096 KB
testcase_12 AC 37 ms
51,840 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

from itertools import accumulate

N, Q = map(int, input().split())
A = list(map(int, input().split()))

ones = [i for i in range(N) if A[i] == 1]
floor = [a // 9 for a in A]
acc_floor = [0] + list(accumulate(floor))

for _ in range(Q):
    l, r = map(int, input().split())
    l -= 1

    ans = 0
    add = 0

    for one in ones:
        if l <= one < r:
            ans += (acc_floor[one] - acc_floor[l]) + add * (one - l + 1)
            l = one + 1
            add += 1

    ans += (acc_floor[r] - acc_floor[l]) + add * (r - l)
    print(ans)
0