Submission #1174715

#TimeUsernameProblemLanguageResultExecution timeMemory
1174715CiprianCollecting Mushrooms (NOI18_collectmushrooms)C++20
100 / 100
196 ms198664 KiB
#include <bits/stdc++.h> using namespace std; #define int long long int d1[4]={0,0,1,-1}; int d2[4]={1,-1,0,0}; int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); int n,m,d,k; cin>>n>>m>>d>>k; map<pair<int,int>, int>wet; vector<pair<int,int>>sprinkler, mush; for(int i=1; i<=n; i++){ for(int j=1; j<=m; j++){ char x; cin>>x; if(x=='S')sprinkler.push_back({i,j}); if(x=='M')mush.push_back({i,j}); } } if(n<m){ vector<pair<int,int>>intervals[n+2]; for(auto e:sprinkler){ for(int i=max(e.first-d, 1LL); i<=min(e.first+d,n); i++){ intervals[i].push_back({max(e.second-d, 1LL), min(e.second+d, m)}); } }//sort(intervals.begin(), intervals.end()); int cnt=0; vector<vector<int>>p(n+2,vector<int>(m+2, 0)), pref(n+2,vector<int>(m+2, 0)); for(int i=1; i<=n; i++){ for(auto e: intervals[i]){ p[i][e.first]++; p[i][e.second+1]--; } }for(int i=1; i<=n; i++){ for(int j=1; j<=m; j++){ pref[i][j]=pref[i][j-1]+p[i][j]; } }for(auto e: mush){ if(pref[e.first][e.second]>=k)cnt++; }cout<<cnt<<endl; }else{ vector<pair<int,int>>intervals[m+2]; for(auto e:sprinkler){ for(int i=max(e.second-d, 1LL); i<=min(e.second+d,m); i++){ intervals[i].push_back({max(e.first-d, 1LL), min(e.first+d, n)}); } }//sort(intervals.begin(), intervals.end()); int cnt=0; vector<vector<int>>p(m+2,vector<int>(n+2, 0)), pref(m+2,vector<int>(n+2, 0)); for(int i=1; i<=m; i++){ for(auto e: intervals[i]){ p[i][e.first]++; p[i][e.second+1]--; } }for(int i=1; i<=m; i++){ for(int j=1; j<=n; j++){ pref[i][j]=pref[i][j-1]+p[i][j]; } }for(auto e: mush){ if(pref[e.second][e.first]>=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...