#include "prison.h"
#include <bits/stdc++.h>
using namespace std;
const int M = 1e5 + 1;
int id=1;
int ch[M][3], l[M], r[M], x[M], deg[M], dep[M];
vector<vector<int>> devise_strategy(int n)
{
	l[0]=1,r[0]=n;
	queue<int> q;
	q.push(0);
	while (!q.empty())
	{
		int u=q.front();q.pop();
		int len=r[u]-l[u]-1, y = (x[u]+2)/3*3;
		if (len>=3)
		{
			int e=l[u]+len/3+(len%3>0)+1, e1=e+len/3+(len%3>1);
			ch[u][0]=id++, ch[u][1]=id++, ch[u][2]=id++;
			deg[u]=3;
			x[ch[u][0]]=y+1, x[ch[u][1]]=y+2, x[ch[u][2]]=y+3;
			l[ch[u][0]]=l[u]+1, r[ch[u][0]]=e-1;
			l[ch[u][1]]=e, r[ch[u][1]]=e1-1;
			l[ch[u][2]]=e1, r[ch[u][2]]=r[u];
			q.push(ch[u][0]);
			q.push(ch[u][1]);
			q.push(ch[u][2]);
		}
		else if(len>=1)
		{
			ch[u][0]=id++;
			l[ch[u][0]]=r[ch[u][0]]=l[u]+1;
			x[ch[u][0]]=y+1;
			deg[u]=1;
			if (len>=2)
			{
				ch[u][1]=id++,deg[u]++;
				l[ch[u][1]]=r[ch[u][1]]=l[u]+2;
				x[ch[u][1]]=y+2;
			}
		}
	}
	vector<vector<int>> ans(21, vector<int>(n+1));
	for (int i=0;i<=20;i++)
	{
		int y=(i+2)/3*3;
		ans[i][0]=y%2;
		for (int v=1;v<=n;v++)
		{
			if (!i)
			{
				if (v==1) ans[i][v]=-1;
				else if(v==n) ans[i][v]=-2;
				else
				{
					for (int c=0;c<deg[0];c++)
						if (l[ch[0][c]]<=v)
						{
							ans[i][v]=x[ch[0][c]];
							break;
						}
				}
				continue;
			}
			int cur=0;
			bool pos=1;
			for (int j=0;j<y/3-1;j++)
			{
				if (v<l[ch[cur][0]] or v>r[ch[cur][deg[cur]-1]])
				{
					pos=0;
					break;
				}
				for (int c=0;c<deg[cur];c++)
					if (l[ch[cur][c]]<=v && v<=r[ch[cur][c]])
					{
						cur=ch[cur][c];
						break;
					}
			}
			if (!pos) continue;
			for (int c=0;c<deg[cur];c++)
				if (x[ch[cur][c]]==i)
				{
					if (l[ch[cur][c]]>=v)
						ans[i][v]=-1-ans[i][0];
					else if(v>=r[ch[cur][c]])
						ans[i][v]=-2+ans[i][0];
					else
					{
						cur=ch[cur][c];
						for (int c=0;c<deg[cur];c++)
							if (l[ch[cur][c]]<=v)
							{
								ans[i][v]=x[ch[cur][c]];
								break;
							}
					}
				}
		}
	}
	return ans;
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |