Submission #1063555

#TimeUsernameProblemLanguageResultExecution timeMemory
1063555ArthuroWichRail (IOI14_rail)C++17
0 / 100
39 ms856 KiB
#include "rail.h"
#include<bits/stdc++.h>
using namespace std;
int dist[5005][5005];
int query(int i, int j) {
    if (dist[i][j]) {
        return dist[i][j];
    }
    dist[i][j] = getDistance(i, j);
    return dist[i][j];
}
void findLocation(int n, int f, int loc[], int st[]) {
    int l = 0, r;
    loc[0] = f;
    st[0] = 1;
    if (n == 1) {
        return;
    }
    vector<pair<int, int>> ord;
    for (int i = 1; i < n; i++) {
        ord.push_back({query(0, i), i});
    }
    sort(ord.rbegin(), ord.rend());
    r = ord.back().second;
    loc[r] = loc[0]+ord.back().first;
    st[r] = 2;
    ord.pop_back();
    while(!ord.empty()) {
        auto [_, i] = ord.back();
        ord.pop_back();
        int ld = query(l, i), rd = query(r, i);
        if (max(ld, rd) > loc[r]-loc[i]) {
            if (rd > ld) {
                l = i;
                loc[l] = loc[r]-rd;
                st[l] = 1;
            } else {
                r = i;
                loc[r] = loc[l]+ld;
                st[r] = 2;
            }
        }
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...