이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "rail.h"
#define N 5000
#define INF 0x3f3f3f3f
unsigned int X = 12345;
int rand_() {
return (X *= 3) >> 1;
}
int dd[N];
void sort(int *ii, int l, int r) {
while (l < r) {
int i = l, j = l, k = r, i_ = ii[l + rand_() % (r - l)], tmp;
while (j < k)
if (dd[ii[j]] == dd[i_])
j++;
else if (dd[ii[j]] < dd[i_]) {
tmp = ii[i], ii[i] = ii[j], ii[j] = tmp;
i++, j++;
} else {
k--;
tmp = ii[j], ii[j] = ii[k], ii[k] = tmp;
}
sort(ii, l, i);
l = k;
}
}
void findLocation(int n, int x0, int xx[], int tt[]) {
static int ddd[N][N];
static int ii1[N], ii2[N];
int n1, n2, i, j, ir, d_;
for (i = 0; i < n; i++)
for (j = i + 1; j < n; j++)
ddd[i][j] = ddd[j][i] = getDistance(i, j);
d_ = INF, ir = -1;
for (i = 1; i < n; i++) {
dd[i] = ddd[0][i];
if (d_ > dd[i])
d_ = dd[i], ir = i;
}
n1 = n2 = 0;
for (i = 0; i < n; i++) {
int d = ddd[ir][i];
if (i == 0 || i != ir && d_ + d == dd[i])
dd[i] = d, ii1[n1++] = i;
else
ii2[n2++] = i;
}
xx[0] = x0, xx[ir] = x0 + d_;
sort(ii1, 0, n1);
for (i = 1; i < n1; i++) {
int i_ = ii1[i];
if (tt[i_])
continue;
tt[i_] = 1, xx[i_] = xx[ir] - dd[i_];
for (j = i + 1; j < n1; j++) {
int j_ = ii1[j];
if (!tt[j_] && dd[i_] + ddd[i_][j_] == dd[j_])
tt[j_] = 2, xx[j_] = xx[i_] + ddd[i_][j_];
}
}
sort(ii2, 0, n2);
for (i = 1; i < n2; i++) {
int i_ = ii2[i];
if (tt[i_])
continue;
tt[i_] = 2, xx[i_] = xx[0] + dd[i_];
for (j = i + 1; j < n2; j++) {
int j_ = ii2[j];
if (!tt[j_] && dd[i_] + ddd[i_][j_] == dd[j_])
tt[j_] = 1, xx[j_] = xx[i_] - ddd[i_][j_];
}
}
}
컴파일 시 표준 에러 (stderr) 메시지
rail.c: In function 'findLocation':
rail.c:51:25: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
51 | if (i == 0 || i != ir && d_ + d == dd[i])
| ~~~~~~~~^~~~~~~~~~~~~~~~~~
# | 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... |