解説:#3 2D reverse

製作者:QCFium


C++による解答例です。 ``` #include <bits/stdc++.h> int ri() { int n; scanf("%d", &n); return n; } int main() { int h = ri(), w = ri(), q = ri(); int a[h][w]; for (int i = 0; i < h; i++) for (int j = 0; j < w; j++) a[i][j] = ri(); for (int i = 0; i < q; i++) { int x1 = ri() - 1, x2 = ri(), y1 = ri() - 1, y2 = ri(); for (int j = 0; j < (x2 - x1) / 2; j++) for (int k = y1; k < y2; k++) std::swap(a[x1 + j][k], a[x2 - 1 - j][k]); for (int j = x1; j < x2; j++) for (int k = 0; k < (y2 - y1) / 2; k++) std::swap(a[j][y1 + k], a[j][y2 - 1 - k]); } for (int i = 0; i < h; i++) { for (int j = 0; j < w; j++) { if (j) printf(" "); printf("%d", a[i][j]); } puts(""); } return 0; } ```