提出 #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 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| 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 |