제출 #805489

#제출 시각아이디문제언어결과실행 시간메모리
805489vjudge1Xylophone (JOI18_xylophone)C++17
100 / 100
98 ms320 KiB
#include "xylophone.h" #include <bits/stdc++.h> using namespace std; static int A[5000]; int ask(int l, int r) { return query(l + 1, r + 1); } void solve(int N) { A[0] = 0; A[1] = ask(0, 1); int inc = 1; int d = A[1]; for (int i = 2; i < N; i++) { int x = ask(i - 2, i); int y = ask(i - 1, i); if (x == d) { A[i] = A[i - 1] - inc * y; inc = -inc; } else if (x == y) { A[i] = A[i - 1] - inc * y; inc = -inc; } else if (d + y == x) { A[i] = A[i - 1] + inc * y; } else { A[i] = -1; } d = y; } int mn = min_element(A, A + N) - A; int mx = max_element(A, A + N) - A; if (mn > mx) { for (int i = 0; i < N; i++) A[i] = -A[i]; } int offset = *min_element(A, A + N) - 1; for (int i = 0; i < N; i++) answer(i + 1, A[i] - offset); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...