-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDifferenceArray.ts
More file actions
32 lines (27 loc) · 937 Bytes
/
DifferenceArray.ts
File metadata and controls
32 lines (27 loc) · 937 Bytes
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
import * as fs from 'fs';
function solveEventAttendance(input: string): string {
const lines = input.trim().split('\n');
const D: number = Number(lines[0]);
const N: number = Number(lines[1]);
const diff = Array(+D + 2).fill(0);
// 差分配列を更新
for (let i = 0; i < N; i++) {
const [L, R] = lines[i + 2].split(' ').map(Number);
diff[L] += 1;
if (R + 1 <= +D) {
diff[R + 1] -= 1;
}
}
// 差分配列から累積和を計算
const attendance = 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');
}
// 標準入力からデータを読み込む
const input = fs.readFileSync('/dev/stdin', 'utf8');
const output = solveEventAttendance(input);
console.log(output);