제출 #1316991

#제출 시각아이디문제언어결과실행 시간메모리
1316991pobeXylophone (JOI18_xylophone)C++20
100 / 100
39 ms452 KiB
#include "xylophone.h" #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace std; using namespace __gnu_pbds; using ordered_set = tree <int, null_type, less_equal <int>, rb_tree_tag, tree_order_statistics_node_update>; ostream &operator <<(ostream &out, vector <int> val) { for (auto v : val) { out << v << ' '; } return out; } void solve(int n) { vector <int> res(n); if (n == 1) { answer(1, 1); return; } else if (n == 2) { answer(1, 1); answer(2, 2); return; } vector <int> d(n - 1); for (int i = 0; i < n - 1; ++i) { d[i] = query(i + 1, i + 2); } res[0] = 0; res[1] = d[0]; for (int i = 0; i < n - 2; ++i) { int v = query(i + 1, i + 3); if (v == d[i] + d[i + 1]) { if (res[i] < res[i + 1]) { res[i + 2] = res[i + 1] + d[i + 1]; } else { res[i + 2] = res[i + 1] - d[i + 1]; } } else { if (res[i] < res[i + 1]) { res[i + 2] = res[i + 1] - d[i + 1]; } else { res[i + 2] = res[i + 1] + d[i + 1]; } } } int ind1 = min_element(res.begin(), res.end()) - res.begin(); int ind2 = max_element(res.begin(), res.end()) - res.begin(); int v = res[ind1]; for (int i = 0; i < n; ++i) { res[i] = res[i] - v + 1; if (ind2 < ind1) { res[i] = n + 1 - res[i]; } answer(i + 1, res[i]); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...