Submission #117532

#TimeUsernameProblemLanguageResultExecution timeMemory
117532SortingMechanical Doll (IOI18_doll)C++14
0 / 100
1 ms204 KiB
#include <bits/stdc++.h>

using namespace std;

void answer(vector<int> C, vector<int> X, vector<int> Y);

vector<int> C, X, Y;

int rev(int r, int st){
	int ret = 0, i = 0;

	while(r > 0){
		if(r & 1){
			ret += (1 << (st - 1 - i));
		}

		i++;
		r /= 2;
	}

	return ret;
}

void create_circuit(int M, vector<int> A){
	for(int i = 0; i < M; i++){
		C.push_back(0);
	}
	C.push_back(0);

	int st = 0;

	while((1 << st) < (int)A.size()){
		st++;
	}

	int t;

	if(st == 0){
		t = 1;
	}
	else{
		t = (1 << (st - 1));
	}

	for(int i = 0; i < t - 1; i++){
		X.push_back(-(2 * i + 2));
		Y.push_back(-(2 * i + 3));
	}

	for(int i = 0; i < t; i++){
		int r = 2 * i;

		r = rev(r, st);

		if(r < (int)A.size()){
			X.push_back(A[r]);
		}
		else{
			X.push_back(0);
		}

		r = 2 * i + 1;

		r = rev(r, st);

		if(r < (int)A.size()){
			Y.push_back(A[r]);
		}
		else{
			Y.push_back(0);
		}
	}

	answer(C, X, Y);
}
#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...