| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 293643 | Autoratch | Sky Walking (IOI19_walk) | C++14 | 4067 ms | 363128 KiB | 
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 pii pair<long long,int> 
const int N = 1.5e6 + 1;
int n,m,id;
pair<int,int> val[N];
vector<pair<int,int> > ver[N];
vector<pair<long long,int> > adj[N];
long long dist[N];
bool visited[N];
priority_queue<pii,vector<pii>,greater<pii> > q;
long long min_distance(vector<int> x,vector<int> h,vector<int> l,vector<int> r,vector<int> y,int s,int g) 
{
    n = x.size(),m = l.size();
    for(int i = 0;i < n;i++)
    {
        ver[i].push_back({0,i});
        val[i] = {i,0};
        id++;
    }
    id++;
    for(int i = 0;i < m;i++)
    {
        vector<int> wo;
        for(int j = l[i];j <= r[i];j++) if(h[j]>=y[i]) wo.push_back(j);
        int pr = -1;
        for(int j : wo) 
        {
            val[++id] = {j,y[i]};
            if(pr!=-1)
            {
                adj[id].push_back({x[j]-x[pr],id-1});
                adj[id-1].push_back({x[j]-x[pr],id});
            }
            pr = j;
            ver[j].push_back({y[i],id});
        }
    }
    for(int i = 0;i < n;i++)
    {
        sort(ver[i].begin(),ver[i].end());
        for(int j = 1;j < ver[i].size();j++)
        {
            adj[ver[i][j-1].second].push_back({ver[i][j].first-ver[i][j-1].first,ver[i][j].second});
            adj[ver[i][j].second].push_back({ver[i][j].first-ver[i][j-1].first,ver[i][j-1].second});
        }
    }
    for(int i = 0;i <= id;i++) dist[i] = LLONG_MAX;
    dist[s] = 0;
    q.push({0,s});
    while(!q.empty())
    {
        int u = q.top().second;
        q.pop();
        if(visited[u]) continue;
        visited[u] = true;
        for(auto [w,v] : adj[u]) if(dist[u]+w<dist[v]) dist[v] = dist[u]+w,q.push({dist[v],v});
    }
    if(dist[g]==LLONG_MAX) dist[g] = -1;
    return dist[g];
}
Compilation message (stderr)
| # | 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... | ||||
