| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 | 
|---|---|---|---|---|---|---|---|
| 529115 | ftkbrian | 도서관 (JOI18_library) | C++14 | 455 ms | 412 KiB | 
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#include "library.h"
using namespace std;
vector<int> now,lef;
int chk[1010];
void Solve(int N)
{
	if(N == 1) {
		now.push_back(1);
		Answer(now);
		return;
	}
	vector<int> Qur(N,0);
	for(int i = 0 ; i < N ; i++) {
		for(int q = 0 ; q < N ; q++)
			if(q == i) Qur[q] = 0;
			else Qur[q] = 1;
		if(Query(Qur) == 1) {
			now.push_back(i);
			break;
		}
	}
	for(int i = 0 ; i < N ; i++) Qur[i] = 0;
	Qur[now[0]] = 1;
	for(int i = 0 ; i < N ; i++) {
		if(i == now[0]) continue;
		Qur[i] = 1;
		if(Query(Qur) == 1) {
			now.push_back(i); break;
		}
		Qur[i] = 0;
	}
	for(auto i : now) chk[i] = 1;
	for(int i = 0 ; i < N ; i++)
		if(!chk[i]) lef.push_back(i);
	///현재 now에 들어있는 놈이 왼쪽 끝이라 하고 문제를 해결할 것
	for(int i = 2 ; i < N ; i++) {
		int lo = 0,hi = lef.size()-1,loc;
		while(lo <= hi) {
			int mi = lo+hi>>1;
			for(int q = 0 ; q < N ; q++) Qur[q] = 0;
			for(auto q : now) Qur[q] = 1;
			for(int q = lo ; q <= mi ; q++) Qur[lef[q]] = 1;
			int tar = Query(Qur);
			Qur[now.back()] = 0;
			int tar2 = Query(Qur);
			if(tar != tar2) hi = mi-1,loc = mi;
			else lo = mi+1;
		}
		now.push_back(lef[loc]);
		swap(lef[loc],lef.back());
		lef.pop_back();
	}
	for(auto& i : now) i++;
	Answer(now);
}
컴파일 시 표준 에러 (stderr) 메시지
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
