Submission #1330660

#TimeUsernameProblemLanguageResultExecution timeMemory
1330660kantaponzCoreputer (IOI23_coreputer)C++20
80 / 100
1 ms412 KiB
#include "coreputer.h"
#include <bits/stdc++.h>
using namespace std;

vector<int> malfunctioning_cores(int N) {
	vector<int> ans(N);
	vector<int> v(N);
	int l = 0, r = N;
	while (l < r) {
		vector<int> T;
		int mid = (l + r) / 2;
		for (int i = 0; i <= mid; i++) T.push_back(i);
		v[mid] = run_diagnostic(T);
		if (v[mid] == -1) {
			l = mid + 1;
		} else {
			r = mid;
		}
	}

	ans[l] = 1;
	if (l == N - 1) return ans;

	for (int i = 0; i < l; i++) {
		vector<int> qrs;
		for (int j = 0; j <= l; j++) if (j != i) qrs.push_back(j);
		if (run_diagnostic(qrs) == -1) ans[i] = 1;
	}

	for (int i = l + 1; i < N - 1; i++) {
		vector<int> qrs;
		for (int j = 0; j < l; j++) qrs.push_back(j);
		qrs.push_back(i);
		if (run_diagnostic(qrs) >= 0) ans[i] = 1;
	}

	int ct = 0;
	for (int i = 0; i < N - 1; i++) if (ans[i]) ct++;

	if (ct % 2 != v[l]) ans[N-1] = 1;

	return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...