Submission #1236302

#TimeUsernameProblemLanguageResultExecution timeMemory
1236302PlayVoltzMechanical Doll (IOI18_doll)C++20
37 / 100
119 ms12036 KiB
#include "doll.h"
#include <bits/stdc++.h>
using namespace std;

#define pii pair<int, int>
#define mp make_pair
#define pb push_back
#define fi first
#define se second

int m;
vector<int> vect, x, y;

vector<pii> dnc(int node, int d){
	if (d){
		x[node-1]=-2*node;
		y[node-1]=-2*node-1;
		vector<pii> l=dnc(2*node, d-1);
		vector<pii> r=dnc(2*node+1, d-1);
		vector<pii> res;
		for (int i=0; i<l.size(); ++i)res.pb(l[i]), res.pb(r[i]);
		return res;
	}
	return {mp(node-1, 0), mp(node-1, 1)};
}

void create_circuit(int M, vector<int> A){
	m=M;
	vect=A;
	vect.pb(-1);
	vector<int> c(m+1, -1);
	int dep=ceil(log2(vect.size()));
	x.resize((1<<dep)-1, -1);
	y.resize((1<<dep)-1, -1);
	vector<pii> ord=dnc(1, dep-1);
	for (int i=0; i<vect.size()-1; ++i){
		if (ord[i].se)y[ord[i].fi]=vect[i];
		else x[ord[i].fi]=vect[i];
	}
	y[y.size()-1]=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...