답안 #684010

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
684010 2023-01-20T03:35:42 Z pragmatist UFO (IZhO14_ufo) C++17
35 / 100
2000 ms 8020 KB
/*
#pragma comment(linker, "/stack:200000000")
#pragma GCC optimize("O3")
#pragma GCC target ("avx2")
#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#pragma GCC optimize("unroll-loops")
*/

#include<bits/stdc++.h>
 
#define ld long double
#define sz(v) (int)v.size()
#define ll long long
#define pb push_back
#define x first
#define y second
#define all(v) v.begin(), v.end()
#define rall(v) v.rbegin(), v.rend()
#define nl "\n"

using namespace std;
using pii = pair<int, int>;

const int N = (int)1e2 + 7; // make sure this is right
const int M = (int)1e3 + 7;
const int inf = (int)2e9 + 7;
const ll INF = (ll)3e18 + 7; 
const double PI = acos(-1);
ll MOD = (ll)1e9 + 7; // make sure this is right

bool bit(int x, int i) {
	return x >> i & 1;
}

int sum(int x, int y) {
	x += y;
	if(x >= MOD) x -= MOD;
	return x;
}

pii dir[] = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}};

int n, m, r, q, p;

void solve() {
	cin >> n >> m >> r >> q >> p;
	int a[n + 1][m + 1];
	for(int i = 1; i <= n; ++i) {
		for(int j = 1; j <= m; ++j) {
			cin >> a[i][j];
		}
	}
	while(q--) {
		char tp;
		cin >> tp;
		int x, y;
		cin >> x >> y;
		if(tp == 'W') {
			for(int i = 1, cnt = r; i <= m && cnt; ++i) {
				if(a[x][i] >= y) {
					a[x][i]--;
					cnt--;
				}
			}
		}
		if(tp == 'E') {
			for(int i = m, cnt = r; i >= 1 && cnt; --i) {
				if(a[x][i] >= y) {
					a[x][i]--;
					cnt--;
				}
			}
		}
		if(tp == 'N') {
			for(int i = 1, cnt = r; i <= n && cnt; ++i) {
				if(a[i][x] >= y) {
					a[i][x]--;
					cnt--;
				}
			}
		}
		if(tp == 'S') {
			for(int i = n, cnt = r; i >= 1 && cnt; --i) {
				if(a[i][x] >= y) {
					a[i][x]--;
					cnt--;
				}
			}
		}
	}
	ll ans = 0;
	for(int i = 1; i <= n - p + 1; ++i) {
		for(int j = 1; j <= m - p + 1; ++j) {
			ll cur = 0;
			for(int ii = i; ii <= i + p - 1; ++ii) {
				for(int jj = j; jj <= j + p - 1; ++jj) {
					cur += a[ii][jj];
				}
			}
			ans = max(ans, cur);
		}
	}
	cout << ans;
}

signed main() {	
	ios_base::sync_with_stdio(0);
	cin.tie(0);
//	freopen("g.in", "r", stdin);
//	freopen("g.out", "w", stdout);
	int test = 1;
	//cin >> test;
	for(int i = 1; i <= test; ++i) {
	 	//cout << "Case #" << i << ": ";
		solve();
	}
	return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 3 ms 340 KB Output is correct
5 Correct 15 ms 468 KB Output is correct
6 Correct 73 ms 2132 KB Output is correct
7 Execution timed out 2079 ms 4564 KB Time limit exceeded
8 Execution timed out 2098 ms 4564 KB Time limit exceeded
9 Execution timed out 2096 ms 4404 KB Time limit exceeded
10 Execution timed out 2075 ms 4564 KB Time limit exceeded
11 Execution timed out 2094 ms 4528 KB Time limit exceeded
12 Execution timed out 2095 ms 4604 KB Time limit exceeded
13 Execution timed out 2095 ms 4564 KB Time limit exceeded
14 Correct 1018 ms 4524 KB Output is correct
15 Execution timed out 2092 ms 4600 KB Time limit exceeded
16 Execution timed out 2080 ms 4524 KB Time limit exceeded
17 Execution timed out 2085 ms 4564 KB Time limit exceeded
18 Execution timed out 2094 ms 4052 KB Time limit exceeded
19 Execution timed out 2092 ms 5000 KB Time limit exceeded
20 Execution timed out 2091 ms 8020 KB Time limit exceeded