제출 #412075

#제출 시각아이디문제언어결과실행 시간메모리
412075benedict0724Library (JOI18_library)C++17
0 / 100
65 ms456 KiB
#include <cstdio> #include <vector> #include <assert.h> #include "library.h" using namespace std; vector<int> adj[1000]; int lin[1000], U[1000]; int _find(int x) { if(x == lin[x]) return x; return lin[x] = _find(lin[x]); } void Solve(int N) { vector<int> M(N); for(int i=0;i<N;i++) M[i] = 0; M[0] = 1; int P = 0; for(int i = 1; i < N; i++) { int l = 0, r = i-1; M[i] = 1; int Q = Query(M); if(P < Q) { P = Q; continue; } while(l < r) { vector<int> v(N); int mid = (l + r)/2; for(int j=0;j<N;j++) v[j] = 0; for(int j=0;j<=mid;j++) v[j] = 1; int A, B; A = Query(v); v[i] = 1; B = Query(v); if(A >= B) r = mid; else l = mid+1; } adj[i].push_back(l); adj[l].push_back(i); if(P == Q) continue; l = 0, r = i-1; while(l < r) { vector<int> v(N); int mid = (l + r)/2; for(int j=0;j<N;j++) v[j] = 0; for(int j=0;j<=mid;j++) v[j] = 1; int A, B; A = Query(v); v[i] = 1; B = Query(v); if(A > B) r = mid; else l = mid+1; } adj[l].push_back(i); adj[i].push_back(l); P = Q; } vector<int> res(N); int st = -1; for(int i=0;i<N;i++) if(adj[i].size() == 1) st = i; for(int i=0,p=-1,now=st;i<N;i++) { res[i] = now+1; assert(res[i] >= 1 && res[i] <= N); int tmp = 0; for(int nxt : adj[now]) { if(nxt != p) tmp = nxt; } p = now; now = tmp; } Answer(res); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...