Submission #400754

#TimeUsernameProblemLanguageResultExecution timeMemory
400754timmyfengXylophone (JOI18_xylophone)C++17
0 / 100
4 ms200 KiB
#include <bits/stdc++.h> using namespace std; #include "xylophone.h" void solve(int n) { vector<int> ans(n + 1); ans[2] = ans[1] + query(1, 2); for (int i = 3; i <= n; ++i) { int x = query(i - 2, i); int y = query(i - 1, i); if (ans[i - 2] < ans[i - 1]) { if (x == abs(ans[i - 1] - ans[i - 2])) { ans[i] = ans[i - 1] - y; } else if (x == y) { ans[i] = ans[i - 1] - y; } else { ans[i] = ans[i - 1] + y; } } else { if (x == abs(ans[i - 1] - ans[i - 2])) { ans[i] = ans[i - 1] + y; } else if (x == y) { ans[i] = ans[i - 1] + y; } else { ans[i] = ans[i - 1] - y; } } } int offset = *min_element(ans.begin(), ans.end()); for (int i = 1; i <= n; ++i) { ans[i] -= offset - 1; } if (find(ans.begin(), ans.end(), 1) > find(ans.begin(), ans.end(), n)) { reverse(ans.begin() + 1, ans.end()); } for (int i = 1; i <= n; ++i) { answer(i, ans[i]); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...