답안 #440976

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
440976 2021-07-03T20:42:35 Z MrDeboo Awesome Arrowland Adventure (eJOI19_adventure) C++17
0 / 100
1 ms 276 KB
#include <bits/stdc++.h>
#define int long long
#define mod 1000000007
#define endl '\n'
using namespace std;
int idk(char a,char b){
    int ans=0;
    while(a!=b){
        ans++;
        if(a=='S')a='W';
        else if(a=='W')a='N';
        else if(a=='N')a='E';
        else if(a=='E')a='S';
    }
    return ans;
}
signed main(){
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    int n,m;
    cin>>n>>m;
    char arr[n][m];
    for(int i=0;i<n;i++){
        for(int w=0;w<m;w++){
            cin>>arr[i][w];
        }
    }
    priority_queue<pair<int,pair<int,int>>,vector<pair<int,pair<int,int>>>,greater<pair<int,pair<int,int>>>>pq;
    bool bl[n][m];
    memset(bl,false,sizeof(bl));
    pq.push({0,{0,0}});
    while(pq.size()){
        int v=pq.top().first;
        int i=pq.top().second.first;
        int w=pq.top().second.second;
        pq.pop();
        if(bl[i][w])continue;
        bl[i][w]=true;
        if(i==n-1&&w==m-1){cout<<v;return 0;}
        if(i>0&&!bl[i-1][w]&&(arr[i-1][w]!='X'||(i-1==n-1&&w==m-1)))pq.push({v+idk(arr[i][w],'N'),{i-1,w}});
        if(i<n-1&&!bl[i+1][w]&&(arr[i+1][w]!='X'||(i+1==n-1&&w==m-1)))pq.push({v+idk(arr[i][w],'S'),{i+1,w}});
        if(w>0&&!bl[i][w-1]&&(arr[i][w-1]!='X'||(i==n-1&&w-1==m-1)))pq.push({v+idk(arr[i][w],'W'),{i,w-1}});
        if(w<m-1&&!bl[i][w+1]&&(arr[i][w+1]!='X'||(i==n-1&&w+1==m-1)))pq.push({v+idk(arr[i][w],'E'),{i,w+1}});
    }
}
//1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
//0 1 0 1 0 1 0 1 0 1  0  1  0  1  0
//0 0 1 0 0 1 0 0 1 0  0  1  0  0  1
//
//1 3 2 4
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 204 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 204 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 256 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Incorrect 1 ms 276 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 204 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 204 KB Output isn't correct
2 Halted 0 ms 0 KB -