제출 #1021346

#제출 시각아이디문제언어결과실행 시간메모리
1021346lamagrilCollecting Mushrooms (NOI18_collectmushrooms)C++14
60 / 100
131 ms262144 KiB
#include <bits/stdc++.h> using namespace std; int main(){ cin.tie(NULL)->sync_with_stdio(false); int n,m,d,k; cin >> n >> m >> d >> k; char mp[n+5][m+5]; int temp=d; if(!n) d=0; int v[n+d+5][m+d+5],qs[n+d+5][m+d+5]; d=temp; for(int i=0 ; i<=n ; i++){ for(int j=0 ; j<=m ; j++){ v[i][j]=0; qs[i][j]=0; } } int ans=0; for(int i=1 ; i<=n ; i++){ for(int j=1 ; j<=m ; j++){ cin >> mp[i][j]; } } for(int i=1 ; i<=n ; i++){ for(int j=1 ; j<=m ; j++){ if(mp[i][j]=='S'){ if(n==1){ v[1][max(1,j-d)]++; v[1][j+d+1]--; continue; } v[max(1,i-d)][max(1,j-d)]++; v[max(1,i-d)][j+d+1]--; v[i+d+1][max(1,j-d)]--; v[i+d+1][j+d+1]++; } } } for(int i=1 ; i<=n ; i++){ for(int j=1 ; j<=m ; j++){ qs[i][j]=qs[i-1][j]+qs[i][j-1]-qs[i-1][j-1]+v[i][j]; } } for(int i=1 ; i<=n ; i++){ for(int j=1 ; j<=m ; j++){ if(mp[i][j]=='M'){ if(qs[i][j]>=k) ans++; } } } cout << ans << '\n'; }
#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...