제출 #1216204

#제출 시각아이디문제언어결과실행 시간메모리
1216204siewjhSuper Dango Maker (JOI22_dango3)C++20
100 / 100
1739 ms716 KiB
#include "dango3.h"
#include <bits/stdc++.h>
using namespace std;

namespace {
	const int MAXM = 25;
	int N, M;
	vector<int> gv[MAXM];
	int query(int l, int r, int xid){
		vector<bool> vb(N * M + 1, 0);
		for (int i = l; i <= r; i++)
			for (int x : gv[i])
				vb[x] = 1;
		vb[xid] = 1;
		vector<int> qv;
		for (int i = N * M; i >= 1; i--)
			if (!vb[i])
				qv.push_back(i);
		return M - Query(qv) == r - l + 1;
	}
}

void Solve(int N, int M) {
	::N = N; ::M = M;
	int grps = 0;
	for (int i = N * M; i >= 1; i--){
		int lo = 0, hi = grps;
		while (lo < hi){
			int m = (lo + hi) >> 1;
			if (query(lo, m, i)) hi = m;
			else lo = m + 1;
		}
		gv[lo].push_back(i);
		if (grps != M - 1 && lo == grps) grps++;
	}
	for (int i = 0; i < M; i++) Answer(gv[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...