Submission #1230792

#TimeUsernameProblemLanguageResultExecution timeMemory
1230792salmonLibrary (JOI18_library)C++20
0 / 100
0 ms420 KiB
#include <bits/stdc++.h>
#include "library.h"
using namespace std;

bool done[1100];

void Solve(int N){
	
	vector<int> M;
	
	for(int i = 0; i < N; i++) M.push_back(0);
	
	for(int i = 1; i <= N; i++){
		done[i] = false;
	}
	
	done[1] = true;

	deque<int> ans = {1};

	vector<int> left;

	for(int i = 0; i < N - 1; i++){
		for(int i = 1; i <= N; i++){
			if(!done[i]) left.push_back(done[i]);
		}
		
		while(left.size() != 1){
			int sise = left.size();

			vector<int> temp;
			
			for(int i = sise/2; i < sise; i++) temp.push_back(left[i]);
			
			for(int i = 0; i < N; i++) M[i] = 0;
			
			for(int i : temp) M[i-1] = 1;
			
			int num1 = Query(M);
			
			
			for(int i : ans) M[i - 1] = 1;
			
			if(Query(M) <= num1){
				left = temp;
			}
			else{
				for(int i : temp) left.pop_back();
			}
		}
		
		int last = ans.back();
		ans.pop_back();
		
		for(int i = 0; i < N; i++) M[i] = 0;
		for(int i : ans) M[i - 1] = 1;
		M[left[0]] = 1;
		done[left[0]] = true;
		
		if(Query(M) == 1){
			ans.push_back(last);
			ans.push_front(left[0]);
		}
		else{
			ans.push_back(last);
			ans.push_back(left[0]);
		}
	}

	vector<int> sub;
	
	for(int i : ans) sub.push_back(i);

	Answer(sub);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...