Submission #400762

#TimeUsernameProblemLanguageResultExecution timeMemory
400762timmyfengXylophone (JOI18_xylophone)C++17
100 / 100
135 ms320 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 == 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 == ans[i - 2] - ans[i - 1]) { 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)) { for (int i = 1; i <= n; ++i) { ans[i] = n + 1 - ans[i]; } } 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...