제출 #1195886

#제출 시각아이디문제언어결과실행 시간메모리
1195886sheina906Awesome Arrowland Adventure (eJOI19_adventure)C++20
16 / 100
0 ms328 KiB
#include <bits/stdc++.h>
using namespace std;
#define f first
#define s second


unordered_map<char, unordered_map<char, int>> cost;



int main()
{
    cost['N']['N'] = cost['E']['E'] = cost['S']['S'] = cost['W']['W'] = 0;
    cost['N']['E'] = cost['E']['S'] = cost['S']['W'] = cost['W']['N'] = 1;
    cost['N']['S'] = cost['E']['W'] = cost['S']['N'] = cost['W']['E'] = 2;
    cost['N']['W'] = cost['E']['N'] = cost['S']['E'] = cost['W']['S'] = 3;
    cost['X']['N'] = cost['X']['E'] = cost['X']['S'] = cost['X']['W'] = 10000000;


    int n, m; cin >> n >> m;
    vector<string> v(n);
    for (string &s : v) cin >> s;

    vector<vector<int>> dp(n, vector<int> (m, 100000));
    dp[0][0] = 0;
    dp[1][0] = cost[v[0][0]]['S'];




    for (int i = 1; i < m; i++)
    {
        dp[0][i] = min(dp[0][i-1] + cost[v[0][i-1]]['E'], dp[1][i-1] + cost[v[1][i-1]]['E'] + cost[v[1][i]]['N']);
        dp[1][i] = min(dp[1][i-1] + cost[v[1][i-1]]['E'], dp[0][i-1] + cost[v[0][i-1]]['E'] + cost[v[0][i]]['S']);
    }


    cout << (dp[n-1][m-1] >= 10000 ? -1 : dp[n-1][m-1]) << '\n';
    


    return 0;
}


// int main()
// {
//     int n, m, k; cin >> n >> m;
//     vector<string> g(n);
//     for (string &s : g) cin >> s;
//     vector<vector<vector<int>>> dp(n, vector<vector<int>> (m, vector<int> (k)));

// }
#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...