Submission #568693

#TimeUsernameProblemLanguageResultExecution timeMemory
568693errorgornSuper Dango Maker (JOI22_dango3)C++17
100 / 100
2574 ms2824 KiB
#include "dango3.h"

#include <bits/stdc++.h>
using namespace std;

#define int long long
#define ii pair<int,int>
#define fi first
#define se second
#define endl '\n'

#define puf push_front
#define pof pop_front
#define pub push_back
#define pob pop_back
#define lb lower_bound
#define ub upper_bound

#define rep(x,s,e) for (int x=(s)-((s)>(e));x!=(e)-((s)>(e));((s)<(e))?x++:x--)
#define all(x) (x).begin(),(x).end()
#define sz(x) (int) (x).size()

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

namespace {

int n,m;

void solve(set<signed> v){
	if (sz(v)==n){
		Answer(vector<signed>(all(v)));
		return;
	}
	
	int h=sz(v)/n/2;
	set<signed> l,r=v;
	
	for (auto it:v){
		r.erase(it);
		l.insert(it);
		
		if (sz(r)<n*h || Query(vector<signed>(all(r)))<h){
			r.insert(it);
			l.erase(it);
		}
	}
	
	solve(l);
	solve(r);
}

}

void Solve(signed N, signed M) {
	n=N,m=M;
	
	set<signed> v;
	rep(x,1,n*m+1) v.insert(x);
	
	solve(v);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...