Submission #1000112

#TimeUsernameProblemLanguageResultExecution timeMemory
1000112vjudge1Awesome Arrowland Adventure (eJOI19_adventure)C++17
100 / 100
63 ms10188 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define f first #define s second #define pb push_back #define pf push_front #define vi vector<int> #define pi pair<int,int> #define pii pair<ll,pi> const int MAX = 510; int g[MAX][MAX]; const int mod = 4; int dy[4]={1,0,-1,0}; int dx[4] ={0, 1,0,-1}; int dir[4] = {1,2,3,4}; int lmatch(char c){ if(c=='E') return 1; else if(c=='S') return 2; else if(c=='W') return 3; else if(c=='N')return 4; return 5; } int vis[MAX][MAX]; ll dis[MAX][MAX]; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n,m; cin >> n >> m; char c; for(int i = 1; i<= n; i++){ for(int j = 1; j<=m; j++){ cin >> c; g[i][j] =lmatch(c); } } priority_queue<pii, vector<pii>, greater<pii>>pq; pq.push({0,{1,1}}); ll ncost =0; int ans = INT_MAX; for(int i =0; i <= n; i++){ for(int j = 0; j <= m; j++){ dis[i][j]=INT_MAX; } } dis[1][1] = 0; while(!pq.empty()){ int curx = pq.top().s.f; int cury = pq.top().s.s; int cost = pq.top().f; pq.pop(); if(vis[curx][cury])continue; vis[curx][cury]=1; int tox, toy; for(int i = 0; i <4 ; i++){ tox = curx+dx[i], toy = cury+dy[i]; // cout << tox << " " << toy<< " " << curx << " ">> if(tox > n|| toy >m|| tox <1|| toy < 1)continue; if(g[tox][toy]==0) continue; if(g[tox][toy]==5&& (tox!= n ||toy!=m)) continue; // if(visited[tox][toy]) continue; ncost =((dir[i]- g[curx][cury])+mod)%mod; if(ncost + dis[curx][cury] < dis[tox][toy]) { dis[tox][toy] = ncost+dis[curx][cury]; pq.push({dis[tox][toy],{tox, toy}}); } } } if(dis[n][m]==INT_MAX|| g[1][1]==5) cout << -1<< endl; else cout << dis[n][m] << endl; }

Compilation message (stderr)

adventure.cpp: In function 'int main()':
adventure.cpp:62:13: warning: unused variable 'cost' [-Wunused-variable]
   62 |         int cost = pq.top().f;
      |             ^~~~
adventure.cpp:48:9: warning: unused variable 'ans' [-Wunused-variable]
   48 |     int ans = INT_MAX;
      |         ^~~
#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...