#include<bits/stdc++.h>
#include "coreputer.h"
using namespace std;
typedef int ll;
vector<int> malfunctioning_cores(int n) {
	vector<ll> v, ans(n);
	set<ll> s;
	ll lo = 0, hi = n-1;
	while(lo <= hi){
		ll mid = (lo + hi)/2;
		vector<ll> u;
		for(ll i = 0; i <= mid; i++) u.push_back(i);
		ans[mid] = run_diagnostic(u);
		if(ans[mid] == -1) lo = mid+1;
		else hi = mid-1;
	}
	if(lo == 0){
		vector<ll> x(n); x[0] = 1;
		if(ans[lo] == 1) return x;
		lo = 1, hi = n-1;
		while(lo <= hi){
			ll mid = (lo + hi)/2;
			vector<ll> u;
			for(ll i = 0; i <= mid; i++) u.push_back(i);
			ans[mid] = run_diagnostic(u);
			if(ans[mid] <= 0) lo = mid+1;
			else hi = mid-1;
		}
		x[lo] = 1;
		return x;
	}
	if(lo == n-1){
		vector<ll> x(n); x[n-1] = 1;
		return x;
	}
	for(ll i = 0; i < lo; i++) v.push_back(i);
	for(ll i = lo+1; i < n; i++){
		v.push_back(i);
		ans[i] = run_diagnostic(v);
		if(ans[i] == -1) continue;
		v.pop_back();
	}
	v.clear();
	for(ll i = n-1; i > lo; i--) v.push_back(i);
	for(ll i = lo-1; i >= 0; i--){
		v.push_back(i);
		ans[i] = run_diagnostic(v);
		if(ans[i] <= (ans[lo] == 0 ? 0 : -1)) {ans[i] = -1; continue;}
		v.pop_back();
	}
	for(ll i = 0; i < n; i++){
		if(ans[i] == -1) ans[i] = 0;
		else ans[i] = 1;
	}
	return ans;
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |