atcoder.jp
配列のインデックスが配列に格納されているような形なんで、ミスしてもなかなか気付かずハマった。配列の中身を出力するコードを一時的に足して、間違っていた箇所にようやく気付けた。
var HWN = Console.ReadLine()!.Split(' ').Select(x => int.Parse(x)).ToList();
var (H, W, N) = (HWN[0], HWN[1], HWN[2]);
var (A, B, C, D) = (new int[N], new int[N], new int[N], new int[N]);
for (var i = 0; i < N; i++)
{
var ABCD = Console.ReadLine()!.Split(' ').Select(x => int.Parse(x)).ToList();
(A[i], B[i], C[i], D[i]) = (ABCD[0], ABCD[1], ABCD[2], ABCD[3]);
}
var X = new int[H + 2, W + 2];
for (var i = 0; i < N; i++)
{
X[A[i], B[i]]++;
X[A[i], D[i] + 1]--;
X[C[i] + 1, B[i]]--;
X[C[i] + 1, D[i] + 1]++;
}
var Z = new int[H + 2, W + 2];
for (var h = 1; h <= H; h++)
{
for (var w = 1; w <= W; w++)
{
Z[h, w] = Z[h, w - 1] + X[h, w];
}
}
for (var w = 1; w <= W; w++)
{
for (var h = 1; h <= H; h++)
{
Z[h, w] = Z[h - 1, w] + Z[h, w];
}
}
for (var h = 1; h <= H; h++)
{
for (var w = 1; w <= W; w++)
{
if (w > 1)
{
Console.Write(" ");
}
Console.Write(Z[h, w]);
}
Console.WriteLine();
}