문제

N x N의 행렬에서
[r1,c1] - [r2,c2]로 이루어진 사각형에 v를 더하면 된다 각 대각선으로 된 꼭짓점의 좌표이므로 [r1,c1] - [r1,c2] - [r2,c1] - [r2,c2] 가 각 꼭짓점인 사각형의 값들에 대해서 전부 v씩 더하면 된다.
특정한 알고리즘이 딱히 필요한 것 같지는 않다
const INPUT_FILE = process.platform === "linux" ? "/dev/stdin" : "./inputs.txt";
const inputs = require("fs")
.readFileSync(INPUT_FILE)
.toString()
.trim()
.split("\n");
const t = +inputs[0];
for (let i = 1; i < inputs.length; i++) {
const [n, m] = inputs[i].split(" ").map(Number);
const map = inputs
.slice(i + 1, i + n + 1)
.map((row) => row.split(" ").map(Number));
const tests = inputs
.slice(i + n + 1, i + n + m + 1)
.map((test) => test.split(" ").map(Number));
for (const [r1, c1, r2, c2, v] of tests) {
for (let k = r1 - 1; k <= r2 - 1; k++) {
for (let j = c1 - 1; j <= c2 - 1; j++) {
map[k][j] += v;
}
}
}
const resultRow = map.map((row) => row.reduce((acc, curr) => acc + curr, 0));
const resultCol = Array(n).fill(0);
//열
for (let l = 0; l < n; l++) {
let acc = 0;
for (let h = 0; h < n; h++) {
acc += map[h][l];
}
resultCol[l] = acc;
}
console.log(resultRow.join(" "));
console.log(resultCol.join(" "));
i += n + m;
}
그래서 그냥 했다 근데 시간 초과가 떴다