#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... |