Submission #68284384


Source Code Expand

// TypeScript 5.1 / Node.js 18.16.1
// fs を用いて高速入出力を行う
import * as fs from "fs";

const input: number[] = fs.readFileSync(0, "utf8").trim().split(/\s+/).map(Number);

/**
 * 条件を満たす (i, j) の組数を数える関数
 * @param N - 配列の要素数
 * @param arr - 整数配列 A1...AN
 * @returns 条件を満たす (i, j) の組数
 * 
 * 時間計算量: O(N)
 * 空間計算量: O(U) (Uは配列内の異なる値の数、最大でN)
 */
function countPairs(N: number, arr: number[]): number {
    const freq: Map<number, number> = new Map(); // 値 -> 出現回数
    let count = 0;

    for (let i = 0; i < N; i++) {
        const val = arr[i];
        if (freq.has(val)) {
            // 過去に出た回数分だけ (i, j) の組が作れる
            count += freq.get(val)!;
            freq.set(val, freq.get(val)! + 1);
        } else {
            freq.set(val, 1);
        }
    }
    return count;
}

const N: number = input[0];
const arr: number[] = input.slice(1);

const result: number = countPairs(N, arr);
console.log(result);

Submission Info

Submission Time
Task B54 - Counting Same Values
User myoshizumi
Language TypeScript 5.1 (Node.js 18.16.1)
Score 1000
Code Size 1125 Byte
Status AC
Exec Time 81 ms
Memory 65656 KiB

Compile Error


			

			
				

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 1000 / 1000
Status
AC × 1
AC × 8
Set Name Test Cases
Sample sample_01
All max_01, max_02, random_01, random_02, random_03, random_04, random_05, sample_01
Case Name Status Exec Time Memory
max_01 AC 71 ms 58468 KiB
max_02 AC 69 ms 58264 KiB
random_01 AC 42 ms 42656 KiB
random_02 AC 41 ms 42788 KiB
random_03 AC 42 ms 42816 KiB
random_04 AC 47 ms 45608 KiB
random_05 AC 81 ms 65656 KiB
sample_01 AC 42 ms 42832 KiB