A06 - How Many Guests?

atcoder.jp

(R日目までの累積来場者数) - (L - 1 日目までの累積来場者数)を愚直に実装してみた。

var NQ = Console.ReadLine()!
    .Split(' ')
    .Select(x => int.Parse(x))
    .ToList();
var N = NQ[0];
var Q = NQ[1];
var A = Console.ReadLine()!
    .Split(' ')
    .Select(x => int.Parse(x))
    .ToList();

// 質問を読み込む
var L = new List<int>();
var R = new List<int>();
for (var j = 0; j < Q; j++)
{
    var LR = Console.ReadLine()!
        .Split(' ')
        .Select(x => int.Parse(x))
        .ToList();
    L.Add(LR[0]);
    R.Add(LR[1]);
}

// 累積和を計算
var s = 0;
var S = new List<int>();
for (var i = 0; i < N; i++)
{
    s += A[i];
    S.Add(s);
}

for (var j = 0; j < Q; j++)
{
    var l = L[j];
    var r = R[j];
    var answer = S[r - 1];
    if (l - 1 - 1 >= 0)
    {
        answer -= S[l - 1 - 1];
    }
    Console.WriteLine(answer);
}

解答例の「0 日目の累積来場者数を登録しておく」手法は思いつかなかった。番兵みたいなものか。頭良いな。