Submission #1202668

#TimeUsernameProblemLanguageResultExecution timeMemory
1202668NAMINMinerals (JOI19_minerals)C++20
40 / 100
15 ms3076 KiB
#include "minerals.h"
#include <bits/stdc++.h>

using namespace std;

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<=2*N;i++){
		int now = Query(i);
		if(A.size()!=now){
			A.push_back(i);
		}
		else{
			B.push_back(i);
			Query(i);
		}
	}
	for(auto x : A)
		Query(x);

	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...