# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
114841 | 2019-06-03T13:16:48 Z | maruii | Xylophone (JOI18_xylophone) | C++14 | 2 ms | 384 KB |
#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
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 384 KB | Output is correct |
2 | Correct | 2 ms | 304 KB | Output is correct |
3 | Incorrect | 2 ms | 256 KB | Wrong Answer [7] |
4 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 384 KB | Output is correct |
2 | Correct | 2 ms | 304 KB | Output is correct |
3 | Incorrect | 2 ms | 256 KB | Wrong Answer [7] |
4 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 384 KB | Output is correct |
2 | Correct | 2 ms | 304 KB | Output is correct |
3 | Incorrect | 2 ms | 256 KB | Wrong Answer [7] |
4 | Halted | 0 ms | 0 KB | - |