#include <bits/stdc++.h>
#define ll long long
#define sz(x) int(x.size())
#define forn(i,n) for(i=0; i<n; i++)
#define all(x) x.begin(),x.end()
#define pb push_back
#define mp make_pair
#define fr first
#define se second
using namespace std;
vector<vector<int>>v;
ll n;
void calc(ll l, ll r, ll tip, ll sig, ll act, ll la, ll ra)
{
if(l>r)
return;
v[act][0]=tip;
ll i;
for(i=r; i<=ra; i++)
v[act][i]=-((!tip)+1);
for(i=l; i>=la; i--)
v[act][i]=-(tip+1);
l++;
r--;
ll mid=((r-l+1)+2)/3;
for(i=l; i<=l+mid-1; i++)
v[act][i]=sig+1;
for(i=l+mid; i<=l+mid*2-1; i++)
v[act][i]=sig+2;
for(i=l+mid*2; i<=r; i++)
v[act][i]=sig+3;
calc(l,l+mid-1,!tip,sig+3,sig+1,l-1,r+1);
calc(l+mid,l+mid*2-1,!tip,sig+3,sig+2,l-1,r+1);
calc(l+mid*2,r,!tip,sig+3,sig+3,l-1,r+1);
}
std::vector<std::vector<int>> devise_strategy(int N) {
v.resize(50,vector<int>(N+1,0));
n=N;
calc(1,N,0,0,0,1,N);
return {v};
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |