Submission #1234655

#TimeUsernameProblemLanguageResultExecution timeMemory
1234655nasjesCollecting Mushrooms (NOI18_collectmushrooms)C++20
100 / 100
43 ms63012 KiB
#include <iostream> #include <iomanip> #include <vector> #include <cmath> #include <algorithm> #include <set> #include <queue> #include <map> #include <stack> #include <bitset> #include <string> #include <cstring> #include <iterator> #include <random> using namespace std; typedef long long ll; typedef pair<ll, ll> pll; typedef long double ld; const ll dim = 5*(1e3)+7; //const ll mod = 1e9 + 7; const ll inf = 1e18 + 77; #define endl "\n" #define fi first #define pb push_back #define se second #define vll vector<ll> ll n, m; ll t=0; ll calc(ll r1, ll c1, ll r2, ll c2, vector<vll> &sm ){ r1=max(1ll, r1); c1=max(1ll, c1); r2=min(n, r2); c2=min(m, c2); ll ans=sm[r2][c2]-sm[r2][c1-1]-sm[r1-1][c2]+sm[r1-1][c1-1]; return ans; } int main() { ll d, k; cin>>n>>m>>d>>k; vector<vll> g(n+4, vll(m+5, 0)); vector<vll> a(n+4, vll(m+5, 0)); vector<vll> sm(n+4, vll(m+5, 0)); for(int i=1; i<=n; i++){ string s; cin>>s; for(int j=1; j<=m; j++){ if(s[j-1]=='S'){a[i][j]=1; g[i][j]=1;} else if(s[j-1]=='M')a[i][j]=2; } } for(int i=1; i<=n; i++){ for(int j=1; j<=m; j++){ sm[i][j]=sm[i-1][j]+sm[i][j-1]-sm[i-1][j-1]+g[i][j]; } } ll cnt=0; for(int i=1; i<=n; i++){ for(int j=1; j<=m; j++){ if(a[i][j]==2){ ll ans=calc(i-d, j-d, i+d, j+d, sm); if(ans>=k)cnt++; } } } cout<<cnt<<endl; return 0; }
#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...