# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
126700 | E869120 | Xylophone (JOI18_xylophone) | C++14 | 119 ms | 540 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "xylophone.h"
#include <algorithm>
using namespace std;
int A[10009], B2[10009], B3[10009];
void solve(int N) {
for (int i = 0; i < N - 1; i++) B2[i] = query(i + 1, i + 2);
for (int i = 0; i < N - 2; i++) B3[i] = query(i + 1, i + 3);
A[0] = 0; A[1] = B2[0];
for (int i = 2; i < N; i++) {
int V1 = max({ A[i - 2],A[i - 1],A[i - 1] + B2[i - 1] }) - min({ A[i - 2],A[i - 1],A[i - 1] + B2[i - 1] });
int V2 = max({ A[i - 2],A[i - 1],A[i - 1] - B2[i - 1] }) - min({ A[i - 2],A[i - 1],A[i - 1] - B2[i - 1] });
if (V1 == B3[i - 2]) A[i] = A[i - 1] + B2[i - 1];
else A[i] = A[i - 1] - B2[i - 1];
}
int minx = 0;
for (int i = 0; i < N; i++) minx = min(minx, A[i]);
for (int i = 0; i < N; i++) A[i] -= minx - 1;
int id1 = -1, id2 = -1;
for (int i = 0; i < N; i++) { if (A[i] == 1) id1 = i; if (A[i] == N) id2 = i; }
if (id1 > id2) { for (int i = 0; i < N; i++) A[i] = N + 1 - A[i]; }
for (int i = 0; i < N; i++) answer(i + 1, A[i]);
}
컴파일 시 표준 에러 (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... |