Submission #43987

#TimeUsernameProblemLanguageResultExecution timeMemory
43987ruhanhabib39Library (JOI18_library)C++17
19 / 100
550 ms732 KiB
#include <cstdio> #include <vector> #include <algorithm> #include "library.h" using namespace std; namespace { int N; const int MAXN = 1000; vector<int> G[MAXN + 10]; vector<int> init(int l, int r, int i = -1) { vector<int> v(N, 0); fill(v.begin() + l, v.begin() + r + 1, 1); if(i != -1) v[i] = 1; return v; } void work_left(int i, int l, int r) { if(l == r) { G[i].push_back(l); G[l].push_back(i); return; } int m = (l + r) / 2; if(Query(init(l, m)) >= Query(init(l, m, i))) { work_left(i, l, m); } else { work_left(i, m+1, r); } } void work_right(int i, int l, int r) { if(l == r) { G[i].push_back(l); G[l].push_back(i); return; } int m = (l + r) / 2; if(Query(init(m+1, r)) >= Query(init(m+1, r, i))) { work_right(i, m+1, r); } else { work_right(i, l, m); } } }; void Solve(int N_) { N = N_; for(int i = 1; i < N; i++) { if(Query(init(0, i-1)) >= Query(init(0, i))) { work_left(i, 0, i-1); work_right(i, 0, i-1); } } for(int i = 0; i < N; i++) { G[i].erase(unique(G[i].begin(), G[i].end()), G[i].end()); } vector<int> res; res.reserve(N); int u = 0, p = -1; while(G[u].size() > 1) u++; while((int)res.size() < N) { res.push_back(u+1); for(int v : G[u]) { if(v != p) { p = u; u = v; break; } } } Answer(res); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...