-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDifferenceArray.js
More file actions
37 lines (31 loc) · 1.01 KB
/
DifferenceArray.js
File metadata and controls
37 lines (31 loc) · 1.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// コード長 998 Byte
// 実行時間 121 ms
// メモリ 65428 KB
// 標準入力からデータを読み込み(Node.js 実行時)
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin', 'utf8');
function solveEventAttendance(input) {
const lines = input.trim().split('\n');
const D = +lines[0];
const N = +lines[1];
// 差分配列を初期化
const diff = new Array(D + 1).fill(0);
// 差分配列を更新
for (let i = 2; i < N + 2; i++) {
const [L, R] = lines[i].split(' ').map(Number);
diff[L] += 1;
if (R + 1 <= D) {
diff[R + 1] -= 1;
}
}
// console.log(diff);
// 累積和で出席者数を計算
const attendance = new Array(D).fill(0);
attendance[0] = diff[1]; // 初日の値を設定
for (let i = 2; i <= D; i++) {
attendance[i - 1] = attendance[i - 2] + diff[i];
}
// 結果を改行区切りで返す
return attendance.join('\n');
}
console.log(solveEventAttendance(input));