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 |
|
|
| 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 |