Submission #889386

#TimeUsernameProblemLanguageResultExecution timeMemory
889386ParsaSXylophone (JOI18_xylophone)C++17
100 / 100
36 ms1112 KiB
#include "xylophone.h" #include<bits/stdc++.h> using namespace std; static int A[5005]; bool vis[5005]; /*int query(int l, int r) { cout << l << ' ' << r << endl; int x; cin >> x; return x; }*/ void solve(int N) { int l = 1, r = N; while (r - l > 1) { int mid = (l + r) / 2; if (query(mid, N) == N - 1) l = mid; else r = mid; } A[l] = 1; vis[1] = true; if (l > 1) { A[l - 1] = query(l - 1, l) + 1; vis[A[l - 1]] = true; } A[l + 1] = query(l, l + 1) + 1; vis[A[l + 1]] = true; vis[0] = vis[N + 1] = true; for (int i = l - 2; i > 0; i--) { int d1 = query(i, i + 1); if (!vis[max(0, A[i + 1] - d1)] && !vis[min(N + 1, A[i + 1] + d1)]) { int d2 = query(i, i + 2); if (d2 == max(max(A[i + 1], A[i + 2]), A[i + 1] + d1) - min(min(A[i + 1], A[i + 2]), A[i + 1] + d1)) A[i] = A[i + 1] + d1; else A[i] = A[i + 1] - d1; /*if (d2 == abs(A[i + 1] - A[i + 2])) { A[i] = A[i + 1] > A[i + 2] ? A[i + 1] - d1 : A[i + 1] + d1; } else { A[i] = A[i + 1] > A[i + 2] ? A[i + 1] + d1 : A[i + 1] - d1; }*/ } else if (!vis[max(0, A[i + 1] - d1)]) A[i] = A[i + 1] - d1; else A[i] = A[i + 1] + d1; vis[A[i]] = true; } for (int i = l + 2; i <= N; i++) { int d1 = query(i - 1, i); if (!vis[max(0, A[i - 1] - d1)] && !vis[min(N + 1, A[i - 1] + d1)]) { int d2 = query(i - 2, i); if (d2 == max(max(A[i - 1], A[i - 2]), A[i - 1] + d1) - min(min(A[i - 1], A[i - 2]), A[i - 1] + d1)) A[i] = A[i - 1] + d1; else A[i] = A[i - 1] - d1; /*if (d2 == abs(A[i - 1] - A[i - 2])) { A[i] = A[i - 1] > A[i - 2] ? A[i - 1] - d1 : A[i - 1] + d1; } else A[i] = A[i - 1] > A[i - 2] ? A[i - 1] + d1 : A[i - 1] - d1;*/ } else if (!vis[max(0, A[i - 1] - d1)]) A[i] = A[i - 1] - d1; else A[i] = A[i - 1] + d1; vis[A[i]] = true; } for (int i = 1; i <= N; i++) answer(i, A[i]); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...