Submission #521516

#TimeUsernameProblemLanguageResultExecution timeMemory
521516cig32Library (JOI18_library)C++17
100 / 100
358 ms300 KiB
#include "bits/stdc++.h" using namespace std; #include "library.h" void Solve(int N) { if(N == 1) { vector<int> res(1); res[0] = 1; Answer(res); return; } vector<int> M(N); for(int i=0; i<N; i++) M[i] = 1; vector<int> res(N); bool done[N]; for(int i=0; i<N; i++) done[i] = 0; for(int i=0; i<N; i++) { M[i] = 0; int A = Query(M); if(A == 1) { res[0] = i + 1; done[i] = 1; break; } M[i] = 1; } for(int i=1; i<N; i++) { vector<int> v; for(int j=0; j<N; j++) { if(!done[j]) v.push_back(j); } int lb = 0, rb = v.size() - 1; while(lb < rb) { int mid = (lb + rb) >> 1; for(int j=0; j<N; j++) { if(done[j]) M[j] = 1; else M[j] = 0; } for(int j=0; j<=mid; j++) { M[v[j]] = 1; } int a1 = Query(M); for(int j=0; j<N; j++) { if(done[j]) M[j] = 0; } int a2 = Query(M); if(a1 == a2) rb = mid; else lb = mid + 1; } res[i] = v[lb] + 1; done[v[lb]] = 1; } Answer(res); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...