publicclassMain{ privatestaticint N = 1010; privatestaticint[][] b;
publicstaticvoidmain(String[] args){ // 输入数据初始化 Scanner in = new Scanner(System.in); int n = in.nextInt(); int m = in.nextInt(); int q = in.nextInt(); b = newint[N][N]; int[][] arr = newint[N][N]; for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) arr[i][j] = in.nextInt(); // 打印输入二维数组 // printArr(arr, n, m);
// 插入数组 for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) insert(i, j, i, j, arr[i][j]);
// 循环插入 while (q-- > 0) { int x1 = in.nextInt(); int y1 = in.nextInt(); int x2 = in.nextInt(); int y2 = in.nextInt(); int c = in.nextInt(); // 插入操作, 对 b[n]造成影响 insert(x1, y1, x2, y2, c); }
for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) // 理解理解 arr[i][j] = arr[i - 1][j] + arr[i][j - 1] - arr[i - 1][j - 1] + b[i][j];
// 打印结果 printArr(arr, n, m);
}
// 进行插入操作 privatestaticvoidinsert(int x1, int y1, int x2, int y2, int c){ b[x1][y1] += c; b[x1][y2 + 1] -= c; b[x2 + 1][y1] -= c; b[x2 + 1][y2 + 1] += c; }
// 打印二维数组 privatestaticvoidprintArr(int[][] arr, int n, int m){ for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { System.out.print(arr[i][j] + " "); } System.out.println(); } } }