B07 - Convenience Store 2

atcoder.jp

前の時間帯と比べて何人増減したかを計算して、次にその累積和を計算。

var T = int.Parse(Console.ReadLine()!);
var N = int.Parse(Console.ReadLine()!);

// 例えば0時から10時までの営業で、
// 5時から10時まで働く従業員がいた場合、
// B[10]が範囲外にならないよう、
// 配列の長さを1個多くしておく。
var B = new int[T + 1];
for (var i = 0; i < N; i++)
{
    var input = Console.ReadLine()!
        .Split(' ')
        .Select(x => int.Parse(x))
        .ToList();
    var L = input[0];
    var R = input[1];
    B[L]++;
    B[R]--;
}

var Answer = new int[T];
Answer[0] = B[0];
Console.WriteLine(Answer[0]);
for (var i = 1; i < T; i++)
{
    Answer[i] = Answer[i - 1] + B[i];
    Console.WriteLine(Answer[i]);
}