提出 #68284819


ソースコード 拡げる

# Python 3.11.4
# 処理時間: O(N)
# メモリ使用量: O(U) (U は配列内の異なる値の数、最大で N)

from sys import stdin
from typing import List


def count_pairs(N: int, arr: List[int]) -> int:
    """
    条件を満たす (i, j) の組数をカウントする

    Parameters
    ----------
    N : int
        配列の要素数
    arr : List[int]
        長さ N の整数配列 A1...AN

    Returns
    -------
    int
        条件 (1 ≤ j < i ≤ N かつ A_j = A_i) を満たす組数
    """
    freq: dict[int, int] = {}  # 値 -> 出現回数
    count: int = 0

    for val in arr:
        if val in freq:
            # 過去に出現した回数分だけ組を作れる
            count += freq[val]
            freq[val] += 1
        else:
            freq[val] = 1
    return count


# 高速な入力処理
data: List[int] = list(map(int, stdin.read().strip().split()))
N: int = data[0]
arr: List[int] = data[1:]

result: int = count_pairs(N, arr)
print(result)

提出情報

提出日時
問題 B54 - Counting Same Values
ユーザ myoshizumi
言語 Python (CPython 3.11.4)
得点 1000
コード長 1048 Byte
結果 AC
実行時間 48 ms
メモリ 26176 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 1000 / 1000
結果
AC × 1
AC × 8
セット名 テストケース
Sample sample_01
All max_01, max_02, random_01, random_02, random_03, random_04, random_05, sample_01
ケース名 結果 実行時間 メモリ
max_01 AC 45 ms 21924 KiB
max_02 AC 46 ms 21980 KiB
random_01 AC 18 ms 10472 KiB
random_02 AC 18 ms 10584 KiB
random_03 AC 18 ms 10612 KiB
random_04 AC 20 ms 12192 KiB
random_05 AC 48 ms 26176 KiB
sample_01 AC 19 ms 10516 KiB