Submission #645639

#TimeUsernameProblemLanguageResultExecution timeMemory
645639rainboySuper Dango Maker (JOI22_dango3)C++17
100 / 100
1227 ms812 KiB
#include "dango3.h"
#include <vector>

using namespace std;

const int N = 400, M = 25;

typedef vector<int> vi;

bool used[N * M];

void solve(vi ii, int n, int k) {
	if (n == 1) {
		Answer(ii);
		return;
	}
	int m = n / 2;
	for (int i : ii)
		used[i] = true;
	for (int i : ii) {
		used[i] = false;
		vi ii_;
		for (int j : ii)
			if (used[j])
				ii_.push_back(j);
		if (Query(ii_) < m)
			used[i] = 1;
	}
	vi iil, iir;
	for (int i : ii)
		if (used[i])
			iil.push_back(i);
		else
			iir.push_back(i);
	for (int i : ii)
		used[i] = false;
	solve(iil, m, k), solve(iir, n - m, k);
}

void Solve(int k, int n) {
	vi ii;
	for (int i = 0; i < n * k; i++)
		ii.push_back(i + 1);
	solve(ii, n, k);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...