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...