-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path10016.cpp
More file actions
80 lines (75 loc) · 1.87 KB
/
Copy path10016.cpp
File metadata and controls
80 lines (75 loc) · 1.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
// Author: btjanaka (Bryon Tjanaka)
// Problem: (UVa) 10016
#include <bits/stdc++.h>
#define GET(x) scanf("%d", &x)
#define GED(x) scanf("%lf", &x)
typedef long long ll;
using namespace std;
typedef pair<int, int> ii;
int sq[110][110];
int main() {
int ca;
GET(ca);
int n, ring, t;
while (ca--) {
GET(n);
ring = (n + 1) / 2;
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
GET(sq[i][j]);
}
}
int cc, lim;
for (int i = 0; i < ring; ++i) {
lim = n - i;
GET(t);
for (int j = 0; j < t; ++j) {
GET(cc);
switch (cc) {
case 1:
for (int r = i; r < n / 2; ++r) {
for (int c = i; c < lim; ++c) {
if (c == i || c == lim - 1 || r == i) {
swap(sq[r][c], sq[n - r - 1][c]);
}
}
}
break;
case 2:
for (int r = i; r < lim; ++r) {
for (int c = i; c < n / 2; ++c) {
if (r == i || r == lim - 1 || c == i) {
swap(sq[r][c], sq[r][n - c - 1]);
}
}
}
break;
case 3:
for (int r = i; r < lim; ++r) {
for (int c = i; c < lim; ++c) {
if (r == i || c == lim - 1) {
swap(sq[r][c], sq[c][r]);
}
}
}
break;
case 4:
for (int r = i; r < lim; ++r) {
for (int c = i; c < lim; ++c) {
if (r == i || c == i) {
swap(sq[r][c], sq[n - c - 1][n - r - 1]);
}
}
}
break;
}
}
}
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
printf("%d%c", sq[i][j], j == n - 1 ? '\n' : ' ');
}
}
}
return 0;
}