Submission #1259720

#TimeUsernameProblemLanguageResultExecution timeMemory
1259720stanirinaAwesome Arrowland Adventure (eJOI19_adventure)C++20
16 / 100
1 ms328 KiB
#include <bits/stdc++.h>

using namespace std;

int rotiraj(char a, char b){
    if(a=='X')return 100000;
    int posa,posb;
    if(a=='E')posa=0;
    else if(a=='S')posa=1;
    else if(a=='W')posa=2;
    else if(a=='N')posa=3;
    if(b=='E')posb=0;
    else if(b=='S')posb=1;
    else if(b=='W')posb=2;
    else if(b=='N')posb=3;
    return (posb+4-posa)%4;
}


int main()
{
    int m,n;
    cin>>m>>n;
    string s1,s2;
    cin>>s1>>s2;
    vector<int> ans1(n,100000);
    vector<int> ans2(n,100000);
    ans2[n-1]=0;
    ans1[n-1]=rotiraj(s1[n-1],'S');

    for(int i=n-2;i>=0;i--){
        ans1[i]=min(ans1[i],ans1[i+1]+rotiraj(s1[i],'E'));
        ans1[i]=min(ans1[i],ans2[i+1]+rotiraj(s1[i],'S')+rotiraj(s2[i],'E'));
        ans2[i]=min(ans2[i],ans2[i+1]+rotiraj(s2[i],'E'));
        ans2[i]=min(ans2[i],ans1[i+1]+rotiraj(s2[i],'N')+rotiraj(s1[i],'E'));
    }
    if(ans1[0]>=6000)cout<<-1<<endl;
    else cout<<ans1[0]<<endl;
    return 0;
}
#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...