Submission #586333

#TimeUsernameProblemLanguageResultExecution timeMemory
586333krit3379Collecting Mushrooms (NOI18_collectmushrooms)C++17
100 / 100
29 ms15444 KiB
#include<bits/stdc++.h> using namespace std; #pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") #define N 100005 int n,m,d,k,ans; vector<vector<int>> fen; void upd(int x,int y,int k){ x=max(x,1),y=max(y,1); for(int i=x;i<=n;i+=i&-i)for(int j=y;j<=m;j+=j&-j)fen[i][j]+=k; } void upd_rec(int x,int y){ upd(x-d,y-d,1); upd(x-d,y+d+1,-1); upd(x+d+1,y-d,-1); upd(x+d+1,y+d+1,1); } int query(int x,int y){ x=min(x,n),y=min(y,m); int ans=0; for(int i=x;i>0;i-=i&-i)for(int j=y;j>0;j-=j&-j)ans+=fen[i][j]; return ans; } int main(){ int i,j; scanf("%d %d %d %d",&n,&m,&d,&k); char s[n+5][m+5]; for(i=1;i<=n;i++)scanf(" %s",s[i]+1); fen.resize(n+5); for(i=0;i<n+5;i++)fen[i].resize(m+5); for(i=1;i<=n;i++)for(j=1;j<=m;j++)if(s[i][j]=='S')upd_rec(i,j); for(i=1;i<=n;i++)for(j=1;j<=m;j++)if(s[i][j]=='M'&&query(i,j)>=k)ans++; printf("%d",ans); return 0; }

Compilation message (stderr)

mushrooms.cpp: In function 'int main()':
mushrooms.cpp:31:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   31 |     scanf("%d %d %d %d",&n,&m,&d,&k);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
mushrooms.cpp:33:27: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   33 |     for(i=1;i<=n;i++)scanf(" %s",s[i]+1);
      |                      ~~~~~^~~~~~~~~~~~~~
#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...