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 "rail.h"
#include <iostream>
using namespace std;
int p[100009], l[100009], dist[5009][5009];
int getDist(int a, int b) {
if (a > b) swap(a, b);
if (dist[a][b] != -1) return dist[a][b];
int ZZ = getDistance(a, b);
dist[a][b] = ZZ;
return ZZ;
}
void findLocation(int N, int first, int location[], int stype[])
{
for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) dist[i][j] = -1; }
// ----------------------------------- 一審 -----------------------------------------
int minx = (1 << 30), minid = 0;
for (int i = 0; i < N; i++) { if (i == 0) continue; int z = getDist(0, i); if (z < minx) { minx = z; minid = i; } }
l[minid] = minx; p[minid] = 2;
l[0] = 0; p[0] = 1;
// ----------------------------------- 二審 -----------------------------------------
for (int i = 0; i < N; i++) {
if (i == 0 || i == minid) continue;
if (getDist(0, i) == getDist(0, minid) + getDist(minid, i)) {
int t1 = getDist(minid, i);
l[i] = l[minid] - t1; p[i] = 1;
}
else if (getDist(minid, i) == getDist(minid, 0) + getDist(0, i)) {
int t2 = getDist(0, i);
l[i] = t2; p[i] = 2;
}
else if (getDist(i, minid) < getDist(i, 0)) p[i] = 3;
else p[i] = 4;
}
// ----------------------------------- 終審 -----------------------------------------
int ret1 = 0, retm1 = 0; for (int i = 0; i < N; i++) { if (ret1 > l[i]) { ret1 = l[i]; retm1 = i; } }
int ret2 = 0, retm2 = 0; for (int i = 0; i < N; i++) { if (ret2 < l[i]) { ret2 = l[i]; retm2 = i; } }
for (int i = 0; i < N; i++) {
if (p[i] == 3) {
p[i] = 1;
int z = getDist(retm1, i);
l[i] = ret1 + z;
}
if (p[i] == 4) {
p[i] = 2;
int z = getDist(retm2, i);
l[i] = ret2 - z;
}
}
for (int i = 0; i < N; i++) location[i] = l[i] + first;
for (int i = 0; i < N; i++) stype[i] = p[i];
return;
}
# | 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... |