This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "walk.h"
#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define sz(x) (int)x.size()
#define pb push_back
typedef long long ll;
typedef pair<ll,ll> ii;
const int MX = (int)(1e5+5);
const ll INF = (ll)(1e18);
vector<ii> adj[MX],VEC[1200005];
ll dist[1200005];
ll min_distance(vector<int> x, vector<int> h, vector<int> l, vector<int> r, vector<int> y, int s, int g) {
int n=sz(x);
int idx=n;
vector<pair<ii,int > >vec;
for (int i = 0; i < n; ++i)
vec.pb({{h[i],1},i});
for (int i = 0; i < sz(l); ++i)
vec.pb({{y[i],0},i});
sort(vec.begin(),vec.end(),greater<pair<ii,int> > ());
set<int> alive;
for (int i = 0; i < sz(vec); ++i)
{
if(vec[i].fi.se)alive.insert(vec[i].se);
else{
auto it=alive.find(l[vec[i].se]);
vector<ii> G;
while(it!=alive.end() && (*it)<=r[vec[i].se]){
adj[*it].pb({vec[i].fi.fi,idx});
G.pb({idx,x[*it]}),idx++;
it++;
}
for (int j = 0; j < sz(G)-1; ++j)
{
//cerr<<G[j].fi<<","<<G[j+1].fi<<" w : "<<G[j+1].se-G[j].se<<"\n";
VEC[G[j].fi].pb({G[j+1].fi,G[j+1].se-G[j].se});
VEC[G[j+1].fi].pb({G[j].fi,G[j+1].se-G[j].se});
}
}
}
for (int i = 0; i < n; ++i)
{
adj[i].pb({0,i});
for (int j = sz(adj[i])-1; j >= 1; j--)
{
//cerr<<adj[i][j].se<<","<<adj[i][j-1].se<<" w : "<<adj[i][j-1].fi-adj[i][j].fi<<"\n";
VEC[adj[i][j].se].pb({adj[i][j-1].se,adj[i][j-1].fi-adj[i][j].fi});
VEC[adj[i][j-1].se].pb({adj[i][j].se,adj[i][j-1].fi-adj[i][j].fi});
}
}
priority_queue<ii,vector<ii>,greater<ii> > pq;
for (int i = 0; i < idx; ++i)
dist[i]=INF;
dist[s]=0;
pq.push({0,s});
while(!pq.empty()){
ii f=pq.top();
pq.pop();
if(dist[f.se]!=f.fi)continue;
for(auto it:VEC[f.se])
if(dist[it.fi]>(f.fi+it.se)){
dist[it.fi]=f.fi+it.se;
pq.push({dist[it.fi],it.fi});
}
}
if(dist[g]==INF)return -1;
return dist[g];
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |