解説:#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;
}
```