Submission #314624

#TimeUsernameProblemLanguageResultExecution timeMemory
314624DymoNautilus (BOI19_nautilus)C++14
100 / 100
190 ms888 KiB
#include<bits/stdc++.h> using namespace std; #define pb push_back #define ll long long #define pll pair<ll,ll> #define ff first #define ss second #define endl "\n" const ll maxn=5e2+50; const ll mod =1e9+7; const ll base=517; bitset<maxn> a[maxn],dp[maxn][3]; int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); if (fopen("GIDDY.inp", "r")) { freopen("GIDDY.inp", "r", stdin); freopen("GIDDY.out", "w", stdout) ; } ll n, m, q; cin>>n>>m>>q; for (int i=1; i<=n; i++) { for (int j=0; j<m; j++) { char x; cin>>x ; if (x=='.') a[i][j]=1; else a[i][j]=0; } dp[i][0]=a[i]; } string s; cin>>s; s=" "+s; for (int i=1; i<=q; i++) { for (int t=1; t<=n; t++) { if (s[i]=='N') dp[t][i%2]=dp[t+1][1-i%2]; else if (s[i]=='S') dp[t][i%2]=dp[t-1][1-i%2]; else if (s[i]=='E') dp[t][i%2]=dp[t][1-i%2]<<1; else if (s[i]=='W') dp[t][i%2]=dp[t][1-i%2]>>1; else { dp[t][i%2]=((dp[t][1-i%2]<<1)|(dp[t][1-i%2]>>1)|(dp[t+1][1-i%2])|(dp[t-1][1-i%2])); } dp[t][i%2]&=a[t]; } } ll ans=0; for (int i=1;i<=n;i++) { ans+=dp[i][q%2].count(); } cout <<ans; }

Compilation message (stderr)

nautilus.cpp: In function 'int main()':
nautilus.cpp:24:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   24 |         freopen("GIDDY.inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
nautilus.cpp:25:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   25 |         freopen("GIDDY.out", "w", stdout) ;
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...