# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
804419 | vjudge1 | Library (JOI18_library) | C++17 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#ifdef Home
#define _GLIBCXX_DEBUG
#endif // Home
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
void Solve(int N) {
srand(time(0));
vector < int > M(N);
deque < int > dq;
vector < int > books(N);
iota(books.begin(), books.end(), 1);
random_shuffle(books.begin(), books.end());
dq.push_back(books.back());
bool ok = true;
for(; ok;) {
ok = false;
M[dq.back()] = 1;
for(int i = 0; i < books.size(); ++ i) {
M[books[i]] = 1;
int ans = Query(M);
M[books[i]] = 0;
if(ans == 1) {
dq.push_back(books[i]);
books.erase(books.begin() + i);
ok = true;
break;
}
}
M[dq.back()] = 0;
}
for(ok = true; ok;) {
ok = false;
M[dq.front()] = 1;
for(int i = 0; i < books.size(); ++ i) {
M[books[i]] = 1;
int ans = Query(M);
M[books[i]] = 0;
if(ans == 1) {
dq.push_front(books[i]);
books.erase(books.begin() + i);
ok = true;
break;
}
}
M[dq.front()] = 0;
}
vector < int > res;
for(auto &i : dq) {
res.push_back(i);
}
Answer(res);
}