제출 #1236125

#제출 시각아이디문제언어결과실행 시간메모리
1236125amine_arouaPark (JOI17_park)C++20
67 / 100
278 ms588 KiB
#include "park.h"
#include<bits/stdc++.h>
using namespace std;
static int Place[1400];
void Detect(int T, int N) {
	vector<int> all = {0 , 1};
	for(int i = 2 ;i < N ; i++)
	{
		int l = 0 , r = i;
		while(l + 1 < r)
		{
			int md = (l + r)>>1;
			for(int j = 0 ; j < N ; j++)
				Place[j] = 1;
			for(int j = md ; j < i ; j++)
				Place[all[j]] = 0;
			assert(Place[0] == 1 && Place[i] == 1);
			bool check = Ask(0 , i , Place);
			if(check)
				r = md;
			else
				l = md;
		}
		all.insert(l + 1 + all.begin() , i);
	}
	// for(int i = 0 ; i < N ; i++)
	// 	cout<<all[i]<<" ";
	// cout<<'\n';
	Answer(0 , all[1]);
	for(int i = 2 ; i < N ; i++)
	{
		int l = 0 , r = i;
		while(l + 1 < r)
		{
			int md = (l + r)>>1;
			for(int j = 0 ; j < N ; j++)
				Place[j] = 1;
			for(int j = md ; j < i ; j++)
				Place[all[j]] = 0;
			assert(Place[0] == 1 && Place[all[i]] == 1);
			bool check = Ask(0 , all[i] , Place);
			if(check)
				r = md;
			else
				l = md;
		}
		// cerr<<l<<" "<<i<<'\n';
		int a = all[i] , b = all[l];
		if(a > b)
			swap(a , b);
		Answer(a , b);
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...