This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
int main()
{
/// freopen("aaaaa", "r", stdin);
/// freopen("bbbbb", "w", stdout);
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n, m, d, k;
cin >> n >> m >> d >> k;
vector<vector<int>>v(n + 7);
vector<vector<int>>a(n + 7);
for(int i = 0; i < n + 7; i++)
{
v[i].resize(m + 7, 0);
a[i].resize(m + 7, 0);
}
for(int i = 1; i <= n; i++)
{
string s;
cin >> s;
for(int j = 1; j <= m; j++)
{
if(s[j - 1] == '.') v[i][j] = 0;
if(s[j - 1] == 'M') v[i][j] = 1;
if(s[j - 1] == 'S') v[i][j] = 2;
}
}
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= m; j++)
{
if(v[i][j] == 2)
{
int rmi = i - d;
int rma = i + d;
int cmi = j - d;
int cma = j + d;
if(rmi < 1) rmi = 1;
if(cmi < 1) cmi = 1;
if(rma > n) rma = n;
if(cma > n) cma = n;
a[rmi][cmi]++;
a[rmi][cma + 1]--;
a[rma + 1][cmi]--;
a[rma + 1][cma + 1]++;
}
}
}
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= m; j++)
{
a[i][j] += a[i][j - 1];
}
}
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= m; j++)
{
a[i][j] += a[i - 1][j];
}
}
int r = 0;
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= m; j++)
{
if(v[i][j] == 1 && a[i][j] >= k)
{
r++;
}
}
}
cout << r << "\n";
return 0;
}
/**
**/
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |