Submission #146971

#TimeUsernameProblemLanguageResultExecution timeMemory
146971dongwon0427Collecting Mushrooms (NOI18_collectmushrooms)C++14
100 / 100
52 ms35928 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int,int> pii; int n,m,d,k; vector<int> A[500005], S[500005]; char tmp[500005]; vector<pii> mush; int cnt(int x1,int y1,int x2,int y2) { x2 = min(x2, n); y2 = min(y2, m); x1--; y1--; x1 = max(0, x1); y1 = max(0, y1); return S[x2][y2] - S[x1][y2] - S[x2][y1] + S[x1][y1]; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>m>>d>>k; for(int j=1;j<=n;j++) { cin>>tmp; int len = strlen(tmp); A[j].push_back(0); for(int i=0;i<len;i++) { A[j].push_back(0); if(tmp[i] == 'S') A[j].back() = 1; if(tmp[i] == 'M') { mush.push_back(pii(j,i+1)); } } } for(int j=0;j<=m;j++) S[0].push_back(0); for(int i=1;i<=n;i++) { S[i].push_back(0); for(int j=1;j<=m;j++) { S[i].push_back(0); S[i][j] = A[i][j] + S[i-1][j] + S[i][j-1] - S[i-1][j-1]; } } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { //cout<<S[i][j]<<' '; } // cout<<'\n'; } //cout<<'\n'; int ans = 0; for(pii p : mush) { //cout<<p.first<<' '<<p.second<<' '<<cnt(p.first - d, p.second - d, p.first + d, p.second + d)<<'\n'; ans += (cnt(p.first - d, p.second - d, p.first + d, p.second + d) >= k); } cout<<ans; 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...