Submission #147828

#TimeUsernameProblemLanguageResultExecution timeMemory
147828MvCNautilus (BOI19_nautilus)C++11
100 / 100
227 ms860 KiB
#pragma GCC target("avx2") #pragma GCC optimization("O3") #pragma GCC optimization("unroll-loops") #include<bits/stdc++.h> //#include "boxes.h" #define rc(x) return cout<<x<<endl,0 #define pb push_back #define mkp make_pair #define in insert #define er erase #define fd find #define fr first #define sc second typedef long long ll; typedef long double ld; const ll INF=0x3f3f3f3f3f3f3f3f; const ll llinf=(1LL<<61); const int inf=(1<<30); const int nmax=5e2+50; const int mod=1e9+7; using namespace std; int h,w,m,i,j,rs,t; char b[nmax*10],c; bitset<nmax>f[nmax][2],a[nmax]; int main() { //freopen("sol.in","r",stdin); //freopen("sol.out","w",stdout); //mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); ios_base::sync_with_stdio(false);cin.tie(0);cerr.tie(0);cout.tie(0); cin>>h>>w>>m; for(i=1;i<=h;i++) { for(j=1;j<=w;j++) { cin>>c; if(c=='.')a[i][j]=1; } } for(i=1;i<=m;i++)cin>>b[i]; for(i=1;i<=h;i++)f[i][1]=a[i]; for(i=1;i<=m;i++) { for(j=1;j<=h;j++)f[j][0]=f[j][1]; for(j=1;j<=h;j++) { f[j][1].reset(); if(b[i]=='W' || b[i]=='?')f[j][1]|=(f[j][0]>>1)&a[j]; if(b[i]=='E' || b[i]=='?')f[j][1]|=(f[j][0]<<1)&a[j]; if(b[i]=='N' || b[i]=='?')f[j][1]|=f[j+1][0]&a[j]; if(b[i]=='S' || b[i]=='?')f[j][1]|=f[j-1][0]&a[j]; if(i==m)rs+=f[j][1].count(); } } cout<<rs<<endl; return 0; }

Compilation message (stderr)

nautilus.cpp:2:0: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
 #pragma GCC optimization("O3")
 
nautilus.cpp:3:0: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
 #pragma GCC optimization("unroll-loops")
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...