Submission #959649

#TimeUsernameProblemLanguageResultExecution timeMemory
959649vjudge1Rail (IOI14_rail)C++17
8 / 100
244 ms98424 KiB
#include "rail.h"
#include <bits/stdc++.h>
using namespace std;

const int N = 5e3;

int n, dis[N][N];

void findLocation(int NN, int first, int location[], int stype[]) {
  n = N;

  for (int i = 0; i < n; i++) {
    dis[i][i] = 0;
    for (int j = i+1; j < n; j++) {
      dis[i][j] = dis[j][i] = getDistance(i, j);
    }
  }

  /*
  encuentro la estacion mas próxima, estara a la derecha y será x
  para cualquier otra estación, o bien pasará por x y luego irá hacia la izquierda 
  o bien será ir solo hacia la derecha
  */

  int x = 1;
  int mn = dis[0][1];
  for (int i = 2; i < n; i++) {
    if (dis[0][i] < mn) {
      mn = dis[0][i];
      x = i;
    }
  }

  stype[0] = 1;
  location[0] = first;
  stype[x] = 2;
  location[x] = first + dis[0][x];
  for (int i = 1; i < n; i++) {
    if (i == x) continue;

    if (dis[0][i] == dis[0][x] + dis[x][i]) {
      stype[i] = 1;
      location[i] = location[x] - dis[x][i];
    }
    else {
      stype[i] = 2;
      location[i] = first + dis[0][i];
    }
  }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...