# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
426032 | Amylopectin | Collecting Mushrooms (NOI18_collectmushrooms) | C++14 | 11 ms | 3736 KiB |
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 <iostream>
#include <stdio.h>
using namespace std;
const int mxn = 1e6 + 10;
char s[mxn] = {},sf[mxn] = {};
int qsu[mxn] = {};
int fimi(int l,int r)
{
if(l < r)
return l;
return r;
}
int fima(int l,int r)
{
if(l > r)
return l;
return r;
}
int main()
{
int i,j,n,m,k,d,nl,nr,ml,mr,ans = 0;
scanf("%d %d %d %d",&n,&m,&d,&k);
for(i=0; i<n; i++)
{
scanf("%s",&sf);
// scanf("%s",&(s)+i*m);
for(j=0; j<m; j++)
{
s[i*m + j] = sf[j];
if(s[i*m + j] == 'S')
{
nl = fima(0,i-d);
nr = fimi(n,i+d+1);
ml = fima(0,j-d);
mr = fimi(m,j+d+1);
qsu[nl*m+ml] ++;
if(mr < m)
qsu[nl*m+mr] --;
if(nr < n)
qsu[nr*m+ml] --;
if(mr < m && nr < n)
qsu[nr*m+mr] ++;
}
}
}
for(i=1; i<n; i++)
{
for(j=0; j<m; j++)
{
qsu[i*m + j] += qsu[(i-1)*m + j];
}
}
for(i=0; i<n; i++)
{
for(j=1; j<m; j++)
{
qsu[i*m + j] += qsu[i*m + j - 1];
}
}
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
if(s[i*m + j] == 'M')
{
if(qsu[i*m+j] >= k)
{
ans ++;
}
}
}
}
printf("%d\n",ans);
return 0;
}
Compilation message (stderr)
# | 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... |