답안 #836180

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
836180 2023-08-24T08:26:31 Z gustason Minerals (JOI19_minerals) C++14
0 / 100
205 ms 262144 KB
#include <bits/stdc++.h>
#include "minerals.h"

using namespace std;

int last = 0;

bool ask(int x) {
	int now = Query(x);
	bool ar_naujas = (now != last);
	last = now;
	return ar_naujas;
}

#define p(x) cout << (#x) << ":\n";print(x)

void print(vector<int>& a) {
	for(int i : a) {
		cout << i << " ";
	} 
	cout << "\n";
}

void go(vector<int> pirmas, vector<int> antras, bool flag=false) {
	int n = pirmas.size(), m = (int) floor((double) n * 0.4);
	//p(pirmas);
	//p(antras);
	
	assert(n != 0);
	if (n == 1) {
		Answer(pirmas[0], antras[0]);
		return;
	}
	
	if (flag) {
		m = n - m;
		for(int i = m; i < n; i++) {
			ask(pirmas[i]);
		}
	}
	else {
		for(int i = 0; i < m; i++) {
			ask(pirmas[i]);
		}
	}
	
	vector<int> naujas_pirmas, naujas_antras;
	random_shuffle(antras.begin(), antras.end());
	for(const auto& i : antras) {
		if ((int) naujas_pirmas.size() == n) {
			naujas_antras.push_back(i);
		}
		else if ((int) naujas_antras.size() == n-m) {
			naujas_pirmas.push_back(i);
		}
		else if (ask(i)) {
			naujas_antras.push_back(i);
		}
		else {
			naujas_pirmas.push_back(i);
		}
	}
	
	vector<int> half, other_half;
	for(int i = 0; i < n; i++) {
		if (i < m) {
			half.push_back(pirmas[i]);
		}
		else {
			other_half.push_back(pirmas[i]);
		}
	}
	
	//p(half);
	//p(naujas_pirmas);
	//p(other_half);
	//p(naujas_antras);
	
	go(half, naujas_pirmas, true);
	go(other_half, naujas_antras);
}

void Solve(int N) {
	vector<int> pirmas, antras;
	for(int i = 1; i <= 2*N; i++) {
		if (ask(i)) {
			pirmas.push_back(i);
		}
		else {
			antras.push_back(i);
		}
	}
	
	go(pirmas, antras, true);
}
# 결과 실행 시간 메모리 Grader output
1 Runtime error 205 ms 262144 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 192 ms 262144 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 205 ms 262144 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 205 ms 262144 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 205 ms 262144 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 205 ms 262144 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 205 ms 262144 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 205 ms 262144 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 205 ms 262144 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -