Submission #218165

#TimeUsernameProblemLanguageResultExecution timeMemory
218165Sho10Awesome Arrowland Adventure (eJOI19_adventure)C++14
38 / 100
6 ms384 KiB
/* ID: Sho10 LANG: C++ */ #include <bits/stdc++.h> //Andrei Alexandru a.k.a Sho10 #define ll long long int #pragma GCC optimize("O3") #pragma GCC optimize("Ofast") #define all(a) (a).begin(), (a).end() #define sz size #define f first #define s second #define pb push_back #define er erase #define in insert #define mp make_pair #define pi pair #define rc(s) return cout<<s,0 #define endl '\n' #define mod 1000000007 #define PI 3.14159265359 #define CODE_START ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0); using namespace std; ll n,m,dp[3][505]; char a[505][505]; int32_t main(){ CODE_START; cin>>n>>m; for(ll i=1;i<=n;i++) { for(ll j=1;j<=m;j++) cin>>a[i][j]; } if(n==2){ for(ll j=1;j<=m-1;j++) { if(a[1][j]=='X'&&a[1][j]=='X'){ rc("-1"); }else if(j+1<=m){ if(a[1][j]=='X'&&a[2][j+1]=='X'){ rc("-1"); }else if(a[2][j]=='X'&&a[1][j+1]=='X'){ rc("-1"); } } } dp[1][1]=0; if(a[1][1]=='E'){ dp[2][1]=1; }else if(a[1][1]=='N'){ dp[2][1]=2; }else if(a[1][1]=='W'){ dp[2][1]=3; }else if(a[1][1]=='S'){ dp[2][1]=0; } for(ll j=2;j<=m;j++) { ll s1=0; if(a[1][j-1]=='E'){ s1=0; }else if(a[1][j-1]=='N'){ s1=1; }else if(a[1][j-1]=='W'){ s1=2; }else if(a[1][j-1]=='S'){ s1=3; } dp[1][j]=dp[1][j-1]+s1; s1=0; if(a[2][j-1]=='E'){ s1=0; }else if(a[2][j-1]=='N'){ s1=1; }else if(a[2][j-1]=='W'){ s1=2; }else if(a[2][j-1]=='S'){ s1=3; } dp[2][j]=dp[2][j-1]+s1; s1=0; if(a[1][j]=='E'){ s1=1; }else if(a[1][j]=='N'){ s1=2; }else if(a[1][j]=='W'){ s1=3; } dp[2][j]=min(dp[2][j],dp[1][j]+s1); s1=0; if(a[2][j]=='N'){ s1=0; }else if(a[2][j]=='W'){ s1=1; }else if(a[2][j]=='S'){ s1=2; }else if(a[2][j]=='E'){ s1=3; } dp[1][j]=min(dp[1][j],dp[2][j]+s1); } cout<<dp[2][m]<<endl; }else { ll ans=0; for(ll i=1;i<=n;i++) for(ll j=1;j<=m-1;j++) if(a[i][j]=='X'){ cout<<"-1"<<endl; return 0; }else if(a[i][j]=='S'){ ans=ans+3; }else if(a[i][j]=='W'){ ans=ans+2; }else if(a[i][j]=='N'){ ans++; } cout<<ans<<endl; } }
#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...