#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair <int, int>
#define fi first
#define se second
vector <ll> vtr;
vector <int> vtr2;
vector <vector <ll> > mat;
vector <vector <int> > mat2;
vector <vector <vector <int> > > s;
void makni(int x, int y) {
mat[x - 1][y - 1]--;
if (mat[x - 1][y - 1] > 0) return;
s[s[x][y][3]][y][2] = s[x][y][2];
s[s[x][y][2]][y][3] = s[x][y][3];
s[x][s[x][y][1]][0] = s[x][y][0];
s[x][s[x][y][0]][1] = s[x][y][1];
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
ll val;
int n, m, r, k, p, a, b;
char c;
cin >> n >> m >> r >> k >> p;
for (int i = 0; i <= n + 1; i++) {
mat2.clear();
for (int j = 0; j <= m + 1; j++) {
vtr2.clear();
vtr2.push_back(j - 1);
vtr2.push_back(j + 1);
vtr2.push_back(i - 1);
vtr2.push_back(i + 1);
mat2.push_back(vtr2);
}
s.push_back(mat2);
}
mat.clear();
for (int i = 1; i <= n; i++) {
vtr.clear();
for (int j = 1; j <= m; j++) {
cin >> val;
vtr.push_back(val);
}
mat.push_back(vtr);
}
for (int i = 0; i < k; i++) {
cin >> c >> a >> b;
int x, y;
if (c == 'N') {x = 0; y = a;}
if (c == 'S') {x = n + 1; y = a;}
if (c == 'W') {x = a; y = 0;}
if (c == 'E') {x = a; y = m + 1;}
for (int j = 0; j < r; j++) {
if (c == 'N') x = s[x][y][3];
if (c == 'S') x = s[x][y][2];
if (c == 'W') y = s[x][y][1];
if (c == 'E') y = s[x][y][0];
makni(x, y);
}
}
ll rj = 0;
for (int i = 0; i < n - p + 1; i++) {
for (int j = 0; j < m - p + 1; j++) {
ll zb = 0;
for (int x = i; x < i + p; x++) {
for (int y = j; y < j + p; y++) {
zb += mat[x][y];
}
}
rj = max(rj, zb);
}
}
cout << rj << "\n";
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |