제출 #905958

#제출 시각아이디문제언어결과실행 시간메모리
905958daoquanglinh2007Super Dango Maker (JOI22_dango3)C++17
100 / 100
2134 ms1136 KiB
#include "dango3.h"

#include <bits/stdc++.h>

using namespace std;

int N, M;
bool mark[10005];

int Ask(vector <int> &v){
	memset(mark, 0, sizeof(mark));
	for (int i : v) mark[i] = 1;
	vector <int> sv(0);
	for (int i = 1; i <= N*M; i++)
		if (!mark[i]) sv.push_back(i);
	return M-Query(sv);
}

void Solve(int a, int b) {
	N = a, M = b;
	vector <int> g[M+1], v;
	for (int i = 1; i <= M; i++) g[i].clear();
	for (int i = 1; i <= N*M; i++){
		int l = 1, r = M, res = -1;
		while (l <= r){
			int mid = (l+r)/2;
			v.clear();
			for (int j = 1; j <= mid; j++)
				for (int x : g[j]) v.push_back(x);
			v.push_back(i);
			if (Ask(v) <= mid){
				res = mid;
				r = mid-1;
			}
			else l = mid+1;
		}
		g[res].push_back(i);
	}
	for (int i = 1; i <= M; i++) Answer(g[i]);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...