Submission #1175819

#TimeUsernameProblemLanguageResultExecution timeMemory
1175819thelegendary08Super Dango Maker (JOI22_dango3)C++17
0 / 100
14 ms584 KiB
#include "dango3.h"
#include<bits/stdc++.h>
#define pb push_back
#define vi vector<int>
#define f0r(i,n) for(int i = 0; i<n; i++)
using namespace std;
vi perm;
int ask(vi quer){
	vi q;
	// cout<<"QUER "<<' ';
	for(auto u : quer){
		q.pb(perm[u]);
		// cout<<u<<' ';
	}
	// cout<<'\n';
	int x = Query(q);
	return x;
}
void ans(vi a){
	vi ret;
	for(auto u : a){
		ret.pb(perm[u]);
	}
	Answer(ret);
}
void Solve(int N, int M) {
	f0r(i, N*M){
		perm.pb(i + 1);
	}
	random_shuffle(perm.begin(), perm.end());
	// for(auto u : perm)cout<<u<<' ';
	// cout<<'\n';
	vi v;
	
	f0r(i, N*M){
		v.pb(i);
	}
	while(v.size() != 0){
		int lst = v.size();
		vi fx;
		while(fx.size() < N){
			// cout<<lst<<'\n';
			int lo = 0;
			int hi = lst - 1;
			while(lo < hi){
				// cout<<lo<<' '<<hi<<'\n';
				int mid = (lo + hi) / 2;
				vi quer;
				for(auto u : fx){
					quer.pb(v[u]);
				}
				f0r(i, mid){
					quer.pb(v[i]);
				}
				int x = ask(quer);
				if(x >= 1){
					hi = mid;
				}
				else{
					lo = mid + 1;
				}
			}
			lst = lo;
			fx.pb(v[lst]);
		}
		ans(fx);
		for(auto u : fx){
			v.erase(find(v.begin(), v.end(), u));
		}
	}
	
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...