Submission #138996

# Submission time Handle Problem Language Result Execution time Memory
138996 2019-07-31T07:13:27 Z Mahdi_Jfri Mechanical Doll (IOI18_doll) C++14
0 / 100
7 ms 6732 KB
#include "doll.h"
#include<bits/stdc++.h>

using namespace std;

#define ll long long
#define pb push_back
#define bit(a , b) (((a)>>(b))&1)

const int maxn = 4e5 + 20;
const int maxb = 20;

int id , pt , R;
int x[maxn] , y[maxn];

vector<int> a , bits;

int build(int n)
{
	if(n == 0)
		return -1;

	int root = id++;
	x[root] = build(n - 1);
	y[root] = build(n - 1);

	return root;
}

int solve(int k)
{
	while(k < bits[0]);
	if(k == bits[0])
		return build(k);

	int xi = lower_bound(bits.begin() , bits.end() , k) - bits.begin();

	int root = id++;
	if(bits[xi] == k)
	{
		x[root] = build(k);
		y[root] = id;
		x[id] = -1e9;
		id++;
		y[id - 1] = solve(k - 1);
	}
	else
	{
		y[root] = solve(k - 1);
		x[root] = -1e9;
	}

	return root;
}

bool is[maxn];

int dfs(int v)
{
	while(pt < (int)a.size())
	{
		if(!is[v])
		{
			is[v] ^= 1;
			if(x[v] < 0)
				x[v] = a[pt++] + maxn * 10 , v = R;
			else
				v = x[v];
		}
		else
		{
			is[v] ^= 1;
			if(y[v] < 0)
				y[v] = a[pt++] + maxn * 10 , v = R;
			else
				v = y[v];
		}
	}
}

void create_circuit(int m, vector<int> A)
{
	memset(x , -1 , sizeof x);
	memset(y , -1 , sizeof y);

	a = A;
	a.pb(0);
	int n = a.size();

	for(int j = 0; j < 20; j++)
		if(bit(n , j))
			bits.pb(j);

	R = solve(bits.back());
	for(int i = 0; i < id; i++)
		if(x[i] < -maxn)
			x[i] = R;

	dfs(R);

	for(int i = 0; i < id; i++)
	{
		int v = i;
		if(x[v] >= maxn * 10)
			x[v] = x[v] - maxn * 10;
		else
			x[v] = -x[v] - 1;

		if(y[v] >= maxn * 10)
			y[v] = y[v] - maxn * 10;
		else
			y[v] = -y[v] - 1;
	}

	vector<int> res;
	for(int i = 0; i <= m; i++)
		res.pb(-R - 1);

	vector<int> X , Y;
	for(int i = 0; i < id; i++)
		X.pb(x[i]) , Y.pb(y[i]);
	answer(res , X , Y);
}

Compilation message

doll.cpp: In function 'int dfs(int)':
doll.cpp:79:1: warning: no return statement in function returning non-void [-Wreturn-type]
   79 | }
      | ^
# Verdict Execution time Memory Grader output
1 Runtime error 6 ms 6648 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 6 ms 6648 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 6 ms 6648 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 7 ms 6732 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 7 ms 6732 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 7 ms 6732 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -