제출 #1331718

#제출 시각아이디문제언어결과실행 시간메모리
1331718nathlol2Coreputer (IOI23_coreputer)C++20
90 / 100
1 ms412 KiB
#include "coreputer.h"
#include <bits/stdc++.h>
using namespace std;

vector<int> malfunctioning_cores(int n){
	int l = 0, r = n - 1, res = -1, ev = 0;
	while(l <= r){
		int md = (l + r) / 2;
		vector<int> t;
		for(int i = 0;i<=md;i++) t.push_back(i);
		int c = run_diagnostic(t);
		if(c >= 0){
			if(c == 0) ev = 1;
			res = md;
			r = md - 1;
		}else{
			l = md + 1;
		}
	}
	vector<int> ans(n);
	ans[res] = 1;
	int cnt = 1;
	for(int i = 0;i<res;i++){
		if(i == n - 1){
			if(ev && cnt % 2 == 1){
				ans[i] = 1;
				break;
			}else if(!ev && cnt % 2 == 0){
				ans[i] = 1;
				break;
			}
			break;
		}
		vector<int> t;
		for(int j = 0;j<=res;j++){
			if(j != i) t.push_back(j);
		}
		if(run_diagnostic(t) < 0){
			ans[i] = 1;
			++cnt;
		}
	}
	for(int i = res + 1;i<n;i++){
		if(i == n - 1){
			if(ev && cnt % 2 == 1){
				ans[i] = 1;
				break;
			}else if(!ev && cnt % 2 == 0){
				ans[i] = 1;
				break;
			}
			break;
		}
		vector<int> t;
		for(int j = (ev ? res + 1 : res);j<n;j++){
			if(j != i) t.push_back(j);
		}
		if(run_diagnostic(t) < 0){
			ans[i] = 1;
			++cnt;
		}
	}
	return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...