제출 #1220358

#제출 시각아이디문제언어결과실행 시간메모리
1220358KindaGoodGamesText editor (CEOI24_editor)C++20
0 / 100
1203 ms1114112 KiB
#include<bits/stdc++.h> using namespace std; #define pii pair<int,int> #define tiii tuple<int,int,int> int INF = numeric_limits<int>::max()/2; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); int n; int sr, sc; int er, ec; cin >> n; cin >> sr >> sc; cin >> er >> ec; sr--;sc--; er--;ec--; vector<int> arr(n); for(int i = 0; i < n; i++){ cin >> arr[i]; } //priority_queue<tiii, vector<tiii>, greater<tiii>> pq; queue<tiii> pq; // map<pii, int> dist; vector<vector<int>> dist(n,vector<int>(5001, INF)); pq.push({0,sr,sc}); int iter = 0; while(pq.size()){ int d,r,c; tie(d,r,c) = pq.front(); pq.pop(); if(dist[r][c] < d) continue; dist[r][c] = d; if(r == er && ec == c) break; // horizontal if(c > 0) pq.push({d+1,r,c-1}); else if(r-1 >= 0)pq.push({d+1,r-1,arr[r-1]}); if(c < arr[r]) pq.push({d+1,r,c+1}); else if(r+1 < n) pq.push({d+1,r+1,0}); // vertical if(r > 0) pq.push({d+1,r-1,min(c,arr[r-1])}); if(r+1 < n) pq.push({d+1,r+1,min(c,arr[r+1])}); } cout << dist[er][ec] << 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...
#Verdict Execution timeMemoryGrader output
Fetching results...