Submission #615427

#TimeUsernameProblemLanguageResultExecution timeMemory
615427valerikkMinerals (JOI19_minerals)C++17
40 / 100
32 ms3156 KiB
#include "minerals.h"
#include <bits/stdc++.h>
using namespace std;

mt19937 gen(239);

int diff;

int query(int x) {
	return diff = Query(x);
}

void solve(vector<int> a, vector<int> b) {
	assert(a.size() == b.size());
	if (a.size() == 1) {
		Answer(a[0], b[0]);
		return;
	}
	int n = a.size();
	vector<int> al, ar, bl, br;
	for (int i = 0; i < n / 2; ++i) {
		query(a[i]);
		al.push_back(a[i]);
	}
	for (int i = n / 2; i < n; ++i) {
		ar.push_back(a[i]);
	}
	for (int i = 0; i < n; ++i) {
		int old_diff = diff;
		if (query(b[i]) > old_diff) {
			bl.push_back(b[i]);
		} else {
			query(b[i]);
			br.push_back(b[i]);
		}
	}
	solve(bl, al);
	solve(ar, br);
}

void Solve(int N) {
	vector<int> a, b;
	for (int i = 1; i <= 2 * N; ++i) {
		int old_diff = diff;
		if (query(i) > old_diff) {
			a.push_back(i);
		} else {
			query(i);
			b.push_back(i);
		}
	}
	solve(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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...