# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
114841 | maruii | Xylophone (JOI18_xylophone) | C++14 | 2 ms | 384 KiB |
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 "xylophone.h"
#include <algorithm>
#include <cstdio>
static int A[5000];
int X[5000], ans[5000];
void solve(int N) {
for (int i = 0; i < N - 1; ++i) X[i] = query(i + 1, i + 2);
ans[1] = X[0];
for (int i = 0; i < N - 2; ++i) {
int t = query(i + 1, i + 3);
if (X[i] + X[i+1] == t) {
if(i == 0 || ans[i+1] > ans[i]) ans[i+2] = ans[i] + t;
else ans[i] = ans[i] - t;
}
else {
if (i == 0 || ans[i+1] > ans[i]) ans[i+2] = ans[i+1] - X[i+1];
else ans[i+2] = ans[i+1] + X[i+1];
}
}
int m = *std::min_element(ans, ans + N) - 1;
int a, b;
for (int i = 0; i < N; ++i) {
ans[i] -= m;
if (ans[i] == 1) a = i;
if (ans[i] == N) b = i;
}
for(int i = 1; i <= N; i++) {
if (a > b) ans[i-1] = N + 1 - ans[i-1];
answer(i, ans[i-1]);
}
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |