제출 #1168754

#제출 시각아이디문제언어결과실행 시간메모리
1168754lufychopCollecting Mushrooms (NOI18_collectmushrooms)C++20
100 / 100
25 ms21228 KiB
#include <bits/stdc++.h> using namespace std; int main(void) { long long r,c,d,k,ans=0,x1,y1,x2,y2; vector<pair<long long,long long>> v; cin>>r>>c>>d>>k; vector<long long> ps((r+2)*(c+2),0); c++; for(int i=1;i<=r;i++) { string s; cin>>s; for(int j=1;j<c;j++) { if(s[j-1]=='S') { ps[i*c+j]=1; } else if(s[j-1]=='M') { v.push_back({i,j}); } } } for(int i=1;i<=r;i++) { for(int j=1;j<c;j++) { //cout<<"("<<i<<","<<j<<") "<<i*(c+1)+j<<" "; ps[i*c+j]=ps[i*c+j]+ps[i*c+j-c]+ps[i*c+j-1]-ps[i*c+j-c-1]; //cout<<ps[i*c+j]<<" "; } //cout<<"\n"; } for(int i=0;i<v.size();i++) { x1=v[i].first-d-1; x2=v[i].first+d; y1=v[i].second-d-1; y2=v[i].second+d; x1=max(x1,(long long)0); x2=min(x2,r); y1=max(y1,(long long)0); y2=min(y2,c-1); //cout<<x1<<" "<<y1<<" "<<ps[x2*c+y2]-ps[x2*c+y1]-ps[x1*c+y2]+ps[x1*c+y1]<<"\n"; if(ps[x2*c+y2]-ps[x2*c+y1]-ps[x1*c+y2]+ps[x1*c+y1]>=k) { ans++; } } cout<<ans; return 0; } /* 5 5 1 1 ....M .M... ..S.. .S... ...M. 4 4 4 1 .... .M.. ..MM ...S 1 8 5 2 SM..MM.S */
#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...