Submission #908394

#TimeUsernameProblemLanguageResultExecution timeMemory
908394penguin133Library (JOI18_library)C++17
0 / 100
24 ms500 KiB
#include <bits/stdc++.h> #include "library.h" using namespace std; void Solve(int N){ if(N == 2){Answer({1, 2}); return;} int A[N+1]; for(int i=1;i<=N;i++)A[i] = 0; vector<int>v; for(int i=1;i<=N;i++)v.push_back(1); vector<int>fin; for(int i=1;i<=N;i++){ v[i-1] = 0; int ans = Query(v); if(ans == 1){fin.push_back(i), A[i] = 1; break;} v[i-1] = 1; } for(int i=2;i<=N;i++){ int x = fin.back(); v.clear(); for(int k=0;k<N;k++)v.push_back(0); v[x-1] = 1; int lo = 1, hi = N; while(lo < hi){ int mid = (lo + hi) >> 1; for(int i=0;i<N;i++)v[i] = 0; int cnt = 0; for(int j = lo; j <= mid; j++){ if(A[j])continue; v[j - 1] = 1; cnt++; } if(cnt == 0){ lo = mid + 1; continue; } v[x-1] = 1; int tmp = Query(v); v[x-1] = 0; int tmp2 = Query(v); //cout << lo << ' ' << mid << ' ' << tmp << ' ' << tmp2 << '\n'; if(tmp > tmp2)lo = mid + 1; else hi = mid; } //cout << lo << ' '; fin.push_back(lo); A[lo] = 1; } Answer(fin); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...