Submission #293655

#TimeUsernameProblemLanguageResultExecution timeMemory
293655rama_pangXylophone (JOI18_xylophone)C++14
100 / 100
125 ms632 KiB
#include "xylophone.h" #include <bits/stdc++.h> using namespace std; void solve(int N) { vector<int> dif1; vector<int> dif2; for (int i = 0; i + 1 < N; i++) { dif1.emplace_back(query(i + 1, i + 2)); } for (int i = 0; i + 2 < N; i++) { dif2.emplace_back(query(i + 1, i + 3)); } vector<int> ans(N); ans[0] = 0; ans[1] = dif1[0]; for (int i = 2; i < N; i++) { if (dif1[i - 2] + dif1[i - 1] == dif2[i - 2]) { if (ans[i - 2] < ans[i - 1]) { ans[i] = ans[i - 1] + dif1[i - 1]; } else { ans[i] = ans[i - 1] - dif1[i - 1]; } } else { if (ans[i - 2] < ans[i - 1]) { ans[i] = ans[i - 1] - dif1[i - 1]; } else { ans[i] = ans[i - 1] + dif1[i - 1]; } } } int mn = *min_element(begin(ans), end(ans)); for (int i = 0; i < N; i++) { ans[i] -= mn - 1; } if (min_element(begin(ans), end(ans)) > max_element(begin(ans), end(ans))) { for (int i = 0; i < N; i++) { ans[i] = N - ans[i] + 1; } } for (int i = 0; i < N; i++) { answer(i + 1, ans[i]); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...