Submission #932232

#TimeUsernameProblemLanguageResultExecution timeMemory
932232salmonSky Walking (IOI19_walk)C++14
0 / 100
4083 ms401088 KiB
#include "walk.h" #include <bits/stdc++.h> using namespace std; map<int,pair<int,int>> sky[100100]; map<int,long long int> d[100100]; priority_queue<pair<long long int, pair<int,int>>,vector<pair<long long int, pair<int,int>>>,greater<pair<long long int, pair<int,int>>>> pq; long long min_distance(vector<int> x, vector<int> h, vector<int> l, vector<int> r, vector<int> y, int s, int g) { int N = x.size(); for(int i = 0; i < N; i++){ l.push_back(i); r.push_back(i); y.push_back(0); } int M = l.size(); for(int i = 0; i < M; i++){ for(int j = l[i]; j <= r[i]; j++){ if(y[i] <= h[j]){ if(sky[j].find(y[i]) != sky[j].end()){ sky[j][y[i]].first = min(sky[j][y[i]].first,l[i]); sky[j][y[i]].second = max(sky[j][y[i]].second,r[i]); } else{ sky[j][y[i]] = make_pair(l[i],r[i]); } } } } pq.push({0,{s,0}}); while(!pq.empty()){ pair<long long int, pair<int,int>> iii = pq.top(); pq.pop(); pair<int,int> ii = iii.second; if(d[ii.first].find(ii.second) != d[ii.first].end()){ continue; } d[ii.first][ii.second] = iii.first; auto it = sky[ii.first].find(ii.second); advance(it,1); if(it != sky[ii.first].end()){ pq.push({iii.first + (it -> first) - ii.second, {ii.first, it -> first}}); } advance(it,-1); if(it != sky[ii.first].begin()){ advance(it,-1); pq.push({iii.first + ii.second - (it -> first), {ii.first, it -> first}}); } if(sky[ii.first][ii.second].first != ii.first){ pq.push({iii.first + x[ii.first] - x[ii.first - 1], {ii.first - 1, ii.second}}); } if(sky[ii.first][ii.second].second != ii.first){ pq.push({iii.first + x[ii.first + 1] - x[ii.first], {ii.first + 1, ii.second}}); } } return d[g][0]; }
#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...