Submission #1202628

#TimeUsernameProblemLanguageResultExecution timeMemory
1202628NAMINMinerals (JOI19_minerals)C++20
25 / 100
9 ms1636 KiB
#include <bits/stdc++.h>
#include "minerals.h"

using namespace std;

const int mxN = 43001;
vector<int> with(2*mxN+1,-1);

void calc(vector<int> A,vector<int> B){
	assert(A.size()==B.size());
	int n=A.size();

	if(n==1){
		Answer(A.back(),B.back());
		return;
	}

	for(int i=0;i<n/2;i++){
		Query(A[i]);
	}
	vector<int> inG,outG;
	for(int i=0;i<n;i++){
		if(Query(B[i])==n/2)
			inG.push_back(B[i]);
		else
			outG.push_back(B[i]);
		Query(B[i]);
	}

	for(int i=0;i<n/2;i++){
		Query(A[i]);
	}

	vector<int> a1,a2;
	for(int i=0;i<n/2;i++){
		a1.push_back(A[i]);
	}
	for(int i=n/2;i<n;i++){
		a2.push_back(A[i]);
	}

	calc(a1,inG);
	calc(a2,outG);
}

void Solve(int N) {
	
	vector<int> A,B;
	for(int i=1;i<=N;i++)
		A.push_back(i);
	for(int i=N+1;i<=2*N;i++)
		B.push_back(i);

	calc(A,B);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...