提出 #68284296
ソースコード 拡げる
// Node.js 18.16.1
// 処理時間とメモリを意識し、Mapを用いたO(N)解法
const fs = require('fs');
const input = fs.readFileSync(0, 'utf8').trim().split(/\s+/).map(Number);
/**
* @param {number} N - 配列の要素数
* @param {number[]} arr - 整数配列 A1...AN
* @returns {number} - 条件を満たす (i,j) の組数
*/
function countPairs(N, arr) {
const freq = new Map(); // 値 -> 出現回数
let count = 0; // 組数
for (let i = 0; i < N; i++) {
const val = arr[i];
if (freq.has(val)) {
// 過去の出現回数分だけ組が作れる
count += freq.get(val);
freq.set(val, freq.get(val) + 1);
} else {
freq.set(val, 1);
}
}
return count;
}
const N = input[0];
const arr = input.slice(1);
const result = countPairs(N, arr);
console.log(result);
提出情報
| 提出日時 | |
|---|---|
| 問題 | B54 - Counting Same Values |
| ユーザ | myoshizumi |
| 言語 | JavaScript (Node.js 18.16.1) |
| 得点 | 1000 |
| コード長 | 910 Byte |
| 結果 | AC |
| 実行時間 | 97 ms |
| メモリ | 65544 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 | 97 ms | 58020 KiB |
| max_02 | AC | 67 ms | 58168 KiB |
| random_01 | AC | 41 ms | 42844 KiB |
| random_02 | AC | 41 ms | 42780 KiB |
| random_03 | AC | 41 ms | 42804 KiB |
| random_04 | AC | 45 ms | 45512 KiB |
| random_05 | AC | 78 ms | 65544 KiB |
| sample_01 | AC | 41 ms | 42756 KiB |