제출 #1311443

#제출 시각아이디문제언어결과실행 시간메모리
1311443samarthkulkarniCollecting Mushrooms (NOI18_collectmushrooms)C++20
60 / 100
2094 ms8660 KiB
#include <bits/stdc++.h>
using namespace std;

using ll = long long;
#define vi vector<long long>
#define all(x) x.begin(), x.end()
#define endl "\n"
#define pr pair<ll, ll>
#define ff first
#define ss second

void solution();
int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    solution();
    return 0;
}


vector<string> a;
ll r, c, d, k;


void ad(pr s, vector<vi> &m) {

	int top = max(s.ff-d, 0ll);
	int bot = min(s.ff+d, r-1);
	int ri = min(s.ss + d, c-1);	
	int lf = max(s.ss-d, 0ll);


	for (int i = top; i <= bot; i++) {
		for (int j = lf; j <= ri; j++) m[i][j]++;
	}

}

void solution() {
	
	cin >> r >> c >> d >> k;

	a.resize(r);
	for (string &z : a) cin >> z;



	
	vector<vi> m(r, vi(c));

	for (int i = 0; i < r; i++) {
		for (int j = 0; j < c; j++) {
			if (a[i][j] == 'S') {
				ad({i, j}, m);
			}
		}
	}

	



	ll ans = 0;
	for (int i = 0; i < r; i++) {
		for (int j = 0; j < c; j++) {
			if (a[i][j] == 'M' && m[i][j] >= k){
				// cout << i << " " << j << endl;
				ans++;
			}
		}
	}
	cout << ans << endl;





	



}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...