Submission #417565

#TimeUsernameProblemLanguageResultExecution timeMemory
417565benedict0724Rail (IOI14_rail)C++17
56 / 100
584 ms98584 KiB
#include "rail.h"
#include <bits/stdc++.h>

using namespace std;

int dist[5002][5002];

int span[5002];
bool U[5002];

void findLocation(int N, int first, int location[], int stype[])
{
    for(int i=0;i<N;i++)
    {
        for(int j=i+1;j<N;j++)
        {
            dist[i][j] = getDistance(i, j);
            dist[j][i] = dist[i][j];
        }
    }

    U[0] = 1;
    stype[0] = 1;
    location[0] = first;
    for(int i=1;i<N;i++) span[i] = 0;
    for(int i=1;i<N;i++)
    {
        int opt = -1;
        for(int j=0;j<N;j++)
        {
            if(U[j]) continue;
            if(opt == -1 || dist[span[opt]][opt] > dist[span[j]][j]) opt = j;
        }
        int pr = span[opt];
        U[opt] = true;
        stype[opt] = 3 - stype[pr];
        if(stype[pr] == 1) location[opt] = location[pr] + dist[opt][pr];
        else location[opt] = location[pr] - dist[opt][pr];

        for(int j=0;j<N;j++) if(dist[span[j]][j] > dist[opt][j]) span[j] = opt;
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...