Submission #216076

#TimeUsernameProblemLanguageResultExecution timeMemory
216076MKopchevNautilus (BOI19_nautilus)C++14
100 / 100
359 ms760 KiB
#include<bits/stdc++.h> using namespace std; const int nmax=500+5; int n,m,k; bitset<nmax> can[nmax],current[nmax],help[nmax],idle; int main() { scanf("%i%i%i",&n,&m,&k); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { char c=getchar(); while(c!='.'&&c!='#')c=getchar(); if(c=='.')can[i][j]=1; } for(int i=1;i<=n;i++) current[i]=can[i]; for(int i=1;i<=k;i++) { char c=getchar(); while(c!='W'&&c!='E'&&c!='S'&&c!='N'&&c!='?')c=getchar(); for(int p=1;p<=n;p++) help[p]=idle; if(c=='N'||c=='?') { for(int p=1;p<=n;p++) help[p]=help[p]|current[p+1]; } if(c=='S'||c=='?') { for(int p=1;p<=n;p++) help[p]=help[p]|current[p-1]; } if(c=='E'||c=='?') { for(int p=1;p<=n;p++) help[p]=help[p]|(current[p]<<1); } if(c=='W'||c=='?') { for(int p=1;p<=n;p++) help[p]=help[p]|(current[p]>>1); } for(int p=1;p<=n;p++) current[p]=help[p]&can[p]; /* int output=0; for(int p=1;p<=n;p++) output=output+current[p].count(); printf("%i\n",output); cout<<"current "<<endl; for(int p=1;p<=n;p++) { for(int q=1;q<=m;q++)cout<<current[p][q]<<" "; cout<<endl; } cout<<"help "<<endl; for(int p=1;p<=n;p++) { for(int q=1;q<=m;q++)cout<<help[p][q]<<" "; cout<<endl; } cout<<"---"<<endl; */ } int output=0; for(int p=1;p<=n;p++) output=output+current[p].count(); printf("%i\n",output); return 0; }

Compilation message (stderr)

nautilus.cpp: In function 'int main()':
nautilus.cpp:10:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%i%i%i",&n,&m,&k);
     ~~~~~^~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...