結果

問題 No.1505 Zero-Product Ranges
ユーザー kichi2004_kichi2004_
提出日時 2021-04-01 23:17:26
言語 Python3
(3.13.1 + numpy 2.2.1 + scipy 1.14.1)
結果
AC  
実行時間 169 ms / 2,000 ms
コード長 1,211 bytes
コンパイル時間 196 ms
コンパイル使用メモリ 12,800 KB
実行使用メモリ 16,304 KB
最終ジャッジ日時 2024-12-21 07:36:36
合計ジャッジ時間 7,113 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 49
権限があれば一括ダウンロードができます

ソースコード

diff #

from collections import deque
from typing import Iterator, Deque, Callable, Tuple
from sys import stdin

import itertools


class Scanner:
    _tokens: Deque[str]

    def __init__(self):
        self._tokens = deque()

    def read(self) -> str:
        if len(self._tokens) == 0:
            self._tokens.extend(stdin.readline().split())
        return self._tokens.popleft()

    def read_int(self) -> int:
        return int(self.read())

    def read_ints(self, n: int) -> Iterator[int]:
        return [self.read_int() for _ in range(n)]

    @staticmethod
    def readline(func: Callable = str):
        return map(func, stdin.readline().split())


cin = Scanner()


def main():
    n = cin.read_int()
    a = [*map(lambda x: bool(x), cin.read_ints(n))]
    ans_all = n * (n + 1) // 2

    a_start = -1
    for i in range(n):
        if a[i]:
            if a_start == -1:
                a_start = i
        else:
            if a_start != -1:
                tmp = i - a_start
                ans_all -= tmp * (tmp + 1) // 2
                a_start = -1

    if a_start != -1:
        tmp = n - a_start
        ans_all -= tmp * (tmp + 1) // 2

    print(ans_all)

if __name__ == '__main__':
    main()
0