Submission #96719

#TimeUsernameProblemLanguageResultExecution timeMemory
96719Retro3014Library (JOI18_library)C++17
100 / 100
525 ms404 KiB
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <stdio.h>

#include "library.h"

using namespace std;

int q(const vector<int>& M){
	for(int i=0; i<M.size(); i++){
		if(M[i]!=0){
			return Query(M);
		}
	}return 0;
}


void Solve(int N){	
	vector<int> v(N);
	vector<int> ans(N);
	vector<bool> chk(N, 0);
	vector<int> idx(N);
	for(int i=0; i<N; i++){
		v[i] = true;
		idx[i] = i;
	}
	for(int i=0; i<N; i++){
		v[i] = false;
		int k = q(v);
		v[i] = true;
		if(k==1){
			ans[0] = i;
			idx[i] = N;
			chk[i] = true;
			break;
		}
	}
	for(int i=1; i<N; i++){
		sort(idx.begin(), idx.end());
		idx.pop_back();
		int s = 0, e = idx.size()-1, m;
		while(s<e){
			m = (s+e)/2;
			int k1, k2;
			for(int j=0; j<N; j++){
				if(chk[j]){
					v[j] = false;
				}else if(idx[s]<=j && j<=idx[m]){
					v[j] = true;
				}else{
					v[j] = false;
				}
			}
			k1 = q(v);
			for(int j=0; j<N; j++){
				if(chk[j]){
					v[j] = true;
				}else if(idx[s]<=j && j<=idx[m]){
					v[j] = true;
				}else{
					v[j] = false;
				}
			}
			k2 = q(v);
			if(k1==k2){
				e = m;
			}else{
				s = m+1;
			}
		}
		ans[i] = idx[s];
		chk[idx[s]] = true;
		idx[s] = N;
	}
	for(int i=0; i<N; i++){
		ans[i]++;
	//	cout<<ans[i]<<' '<<endl;
	}
	Answer(ans);
	return;
}

Compilation message (stderr)

library.cpp: In function 'int q(const std::vector<int>&)':
library.cpp:12:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0; i<M.size(); i++){
               ~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...