Submission #1267070

#TimeUsernameProblemLanguageResultExecution timeMemory
1267070kian2009Xylophone (JOI18_xylophone)C++20
0 / 100
0 ms424 KiB
#include "xylophone.h" #include <bits/stdc++.h> using namespace std; const int MAXN = 5e3 + 10; int n, a[MAXN], x[MAXN]; bool use[MAXN]; bool findArr() { int mn = 0; for (int i = 2; i <= n; i++) { a[i] = a[i - 1] + x[i] * (use[i]? -1: 1); mn = min(mn, a[i]); } int w1 = -1, w2 = -1; for (int i = 1; i <= n; i++) { a[i] -= (mn - 1); if (a[i] == 1) w1 = i; else if (a[i] == n) w2 = i; } return ((w1 >= 1 && w2 >= 1) && w1 < w2); } void solve(int N) { n = N; if (n == 1) { answer(1, 1); return; } if (n == 2) { answer(1, 1); answer(1, 2); return; } for (int i = 2; i <= n; i++) x[i] = query(i - 1, i); for (int i = 3; i <= n; i++) { int num = query(i - 2, i); if (!((num == (x[i] + x[i - 1])) ^ (use[i - 1]))) use[i] = true; } /*if (findArr()) { for (int i = 1; i <= n; i++) answer(i, a[i]); return; } for (int i = 1; i <= n; i++) { a[i] = 0; use[i] = !use[i]; } findArr();*/ 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...