Submission #1220347

#TimeUsernameProblemLanguageResultExecution timeMemory
1220347KindaGoodGamesText editor (CEOI24_editor)C++20
0 / 100
4085 ms237672 KiB
#include<bits/stdc++.h> using namespace std; #define pii pair<int,int> #define tiii tuple<int,int,int> 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; map<pii, int> dist; pq.push({0,sr,sc}); while(pq.size()){ int d,r,c; tie(d,r,c) = pq.top(); pq.pop(); if(dist.count({r,c})) continue; dist[{r,c}] = d; if(r == er && ec == c) break; // horizontal if(c > 0 && !dist.count({r,c-1})) pq.push({d+1,r,c-1}); else pq.push({d+1,r-1,arr[r-1]}); if(c < arr[r]&& !dist.count({r,c+1})) pq.push({d+1,r,c+1}); else if(r+1 < n&& !dist.count({r+1,0})) pq.push({d+1,r+1,0}); // vertical if(r > 0&& !dist.count({r-1,min(c,arr[r-1])})) pq.push({d+1,r-1,min(c,arr[r-1])}); if(r < n&& !dist.count({r+1,min(c,arr[r-1])})) 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...