# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
995035 | 2024-06-08T11:11:28 Z | pera | 도서관 (JOI18_library) | C++17 | 0 ms | 0 KB |
#include<bits/stdc++.h> #include "library.h" using namespace std; void Solve(int N){ if(N == 1){ return {1}; } vector<int> ans , e(N) , tx(N); for(int i = 0;i < N;i ++){ tx[i] = e[i] = 1; } int L = -1; for(int i = 0;i < N;i ++){ tx[i] = 0; if(Query(tx) == 1){ L = i; break; } tx[i] = 1; } e[L] = 0; ans.push_back(L); for(int r = 1;r < N;r ++){ int pos = 0; for(int bit = 9;bit >= 0;bit --){ int _pos = pos + (1 << bit); if(_pos <= N - r){ vector<int> u(N); for(int i = 0;i < N;i ++){ if(_pos > 0 && e[i]){ --_pos; u[i] = 1; } } int bef = Query(u); u[ans.back()] = 1; int now = Query(u); if(bef != now){ pos += (1 << bit); } } } ++pos; for(int i = 0;i < N;i ++){ if(e[i]){ --pos; } if(pos == 0){ pos = i; break; } } ans.push_back(pos); e[pos] = 0; } for(int i = 0;i < N;i ++){ ++ans[i]; } Answer(ans); }