# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
210289 | 2020-03-17T02:08:59 Z | casperwang | Xylophone (JOI18_xylophone) | C++14 | 0 ms | 0 KB |
#include <bits/stdc++.h> using namespace std; const int MAXN = 5000; int m; int a[MAXN+1]; int d[MAXN+1]; bool p[MAXN+1]; void solve(int n) { for (int i = 2; i <= n; i++) d[i] = query(i-1, i); for (int i = 3; i <= n; i++) { if (d[i-1] + d[i] == query(i-2, i)) { p[i] = p[i-1]; } else p[i] = !p[i-1]; } for (int i = 2; i <= n; i++) { if (p[i]) a[i] = a[i-1] + d[i]; else a[i] = a[i-1] - d[i]; m = min(m, a[i]); } for (int i = 1; i <= n; i++) a[i] = a[i] - m + 1; bool tf = 0, t = 0; for (int i = 1; i <= n; i++) { if (a[i] == 1) t = 1; if (a[i] == n && !t) tf = 1; } if (tf) for (int i = 1; i <= n; i++) a[i] = n - a[i] + 1; for (int i = 1; i <= n; i++) answer(i, a[i]); } signed main() { ios_base::sync_with_stdio(0), cin.tie(0); return 0; }