Submission #39006

# Submission time Handle Problem Language Result Execution time Memory
39006 2018-01-09T05:10:30 Z RockyB UFO (IZhO14_ufo) C++14
30 / 100
2000 ms 12516 KB
/// In The Name Of God
 
#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,sse3,sse4,popcnt,abm,mmx")
 
#include <bits/stdc++.h>
 
#define f first
#define s second
 
#define pb push_back
#define pp pop_back
#define mp make_pair
 
#define sz(x) (int)x.size()
#define sqr(x) ((x) * 1ll * (x))
#define all(x) x.begin(), x.end()
 
#define Kazakhstan ios_base :: sync_with_stdio(0), cin.tie(0), cout.tie(0);
 
#define nl '\n'
#define ioi exit(0);
 
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
 
const int N = (int)5e5 + 7, inf = (int)1e9 + 7, mod = (int)1e9 + 7;
const ll linf = (ll)1e18 + 7;
const int dx[] = {-1, 0, 1, 0, 1, -1, -1, 1}, dy[] = {0, 1, 0, -1, 1, -1, 1, -1};
 
using namespace std;
 
int n, m, r, k, p;
vector < vector <int> > a;
int get(int x1, int y1) {
	int res = 0;
	int x2 = x1 + p - 1, y2 = y1 + p - 1;
	for (int i = x1; i <= x2; i++) {
		for (int j = y1; j <= y2; j++) {
			res += a[i][j];
		}
	}
	return res;
}
int main() {
	#ifdef IOI2018
		freopen ("in.txt", "r", stdin);
	#endif
	Kazakhstan
	cin >> n >> m >> r >> k >> p;
	a.resize(n + 7);
	for (int i = 1; i <= n; i++) {
		a[i].resize(m + 7);
		for (int j = 1; j <= m; j++) {
			cin >> a[i][j];
		}
	}
	for (int t = 1; t <= k; t++) {
		char c;
		int x, y;
		cin >> c >> x >> y;
		if (c == 'S') {
			for (int i = n, done = 0; done < r && i >= 1; i--) {
				if (a[i][x] >= y) a[i][x]--, done++;
			}
		}
		else if (c == 'N') {
			for (int i = 1, done = 0; done < r && i <= n; i++) {
				if (a[i][x] >= y) a[i][x]--, done++;
			}
		}
		else if (c == 'W') {
			for (int i = 1, done = 0; done < r && i <= m; i++) {
				if (a[x][i] >= y) a[x][i]--, done++;
			}
		}
		else {
			for (int i = m, done = 0; done < r && i >= 1; i--) {
				if (a[x][i] >= y) a[x][i]--, done++;
			}
		}
	}
	int ans = 0;
	for (int i = 1; i <= n - p + 1; i++) {
		for (int j = 1; j <= m - p + 1; j++) {
			ans = max(ans, get(i, j));
		}
	}
	cout << ans;
	ioi
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 2176 KB Output is correct
2 Correct 0 ms 2176 KB Output is correct
3 Correct 0 ms 2176 KB Output is correct
4 Correct 6 ms 2176 KB Output is correct
5 Correct 16 ms 2308 KB Output is correct
6 Correct 106 ms 4156 KB Output is correct
7 Execution timed out 2000 ms 6096 KB Execution timed out
8 Execution timed out 2000 ms 6096 KB Execution timed out
9 Execution timed out 2000 ms 6096 KB Execution timed out
10 Execution timed out 2000 ms 6096 KB Execution timed out
11 Execution timed out 2000 ms 5952 KB Execution timed out
12 Execution timed out 2000 ms 6096 KB Execution timed out
13 Execution timed out 2000 ms 12308 KB Execution timed out
14 Execution timed out 2000 ms 5952 KB Execution timed out
15 Execution timed out 2000 ms 6096 KB Execution timed out
16 Execution timed out 2000 ms 5952 KB Execution timed out
17 Execution timed out 2000 ms 12308 KB Execution timed out
18 Execution timed out 2000 ms 12516 KB Execution timed out
19 Execution timed out 2000 ms 6096 KB Execution timed out
20 Execution timed out 2000 ms 6084 KB Execution timed out