#include "Anna.h"
#include <bits/stdc++.h>
namespace
{
const int len=37,b=26;
long long dp[64][2];
std::vector<int> c;
std::vector<int> h,v,a;
std::map< std::vector<int>, std::vector<int> > mp1,mp2;
int num;
void rec(int i)
{
if(i==len)
{
h.clear();
for(int j=0; j<b; j++)
if(num&(1<<j))h.push_back(1);
else h.push_back(0);
mp1[c]=h;
mp2[h]=c;
num++;
return;
}
if(i==0||c[c.size()-1]==0)
{
c.push_back(1);
rec(i+1);
c.pop_back();
}
c.push_back(0);
rec(i+1);
c.pop_back();
}
}
void Anna(int N, std::vector<char> S)
{
int f=-1;
for(int i=0; i<N; i++)
{
if(f==-1&&S[i]=='X')
{
f=i;
}
if(f!=-1&&S[i]=='Z')
{
v.push_back(1);
if(v.size()>1&&v[v.size()-2]==1)v[v.size()-2]=0;
}
else v.push_back(0);
}
f++;
for(int j=0;j<17;j++)
if((1<<j)&f)a.push_back(1);
else a.push_back(0);
while(v.size()%len!=0)v.push_back(0);
rec(0);
for(int i=0;i<v.size();i+=len)
{
h.clear();
for(int j=0;j<len;j++)
h.push_back(v[i+j]);
h=mp1[h];
for(int j=0;j<b;j++)
a.push_back(h[j]);
}
for(int i=0;i<a.size();i++)
{
Send(a[i]);
//std::cout<<a[i]<<" ";
}
//std::cout<<std::endl;
}
#include "Bruno.h"
#include <bits/stdc++.h>
namespace
{
const int len1=37,b1=26;
long long dp1[64][2];
std::vector<int> c1;
std::vector<int> h1,v1,a1;
std::map< std::vector<int>, std::vector<int> > mp11,mp21;
int num1;
void rec1(int i)
{
if(i==len1)
{
h1.clear();
for(int j=0; j<b1; j++)
if(num1&(1<<j))h1.push_back(1);
else h1.push_back(0);
mp11[c1]=h1;
mp21[h1]=c1;
/*for(int j=0;j<b1;j++)
std::cout<<h1[j]<<" ";
std::cout<<std::endl;
for(int j=0;j<len1;j++)
std::cout<<c1[j]<<" ";
std::cout<<std::endl;*/
num1++;
return;
}
if(i==0||c1[c1.size()-1]==0)
{
c1.push_back(1);
rec1(i+1);
c1.pop_back();
}
c1.push_back(0);
rec1(i+1);
c1.pop_back();
}
} // namespace
void Bruno(int N, int L, std::vector<int> A)
{
rec1(0);
int x=0;
for(int i=0; i<17; i++)
if(A[i])x+=(1<<i);
if(x==0)
{
for(int i=0; i<N; i++)
Remove(i);
return;
}
x--;
for(int i=17; i<A.size(); i+=b1)
{
c1.clear();
for(int j=0; j<b1; j++)
c1.push_back(A[i+j]);
c1=mp21[c1];
/*for(int j=0;j<len1;j++)
std::cout<<c1[j]<<" ";
std::cout<<std::endl;*/
for(int j=0; j<len1; j++)
v1.push_back(c1[j]);
}
v1[x]=1;
/*std::cout<<x<<std::endl;
for(int i=0;i<v1.size();i++)
std::cout<<v1[i]<<" ";
std::cout<<std::endl;*/
int f=-1,l=-1;
for(int i=0;i<v1.size();i++)
{
if(v1[i])
{
for(int j=i-1;j>l;j--)
Remove(j);
if(f==-1)f=i;
else Remove(i);
l=i;
}
}
if(f==-1)
{
for(int i=0;i<N;i++)
Remove(i);
}
else
{
Remove(f);
for(int i=l+1;i<N;i++)
Remove(i);
}
}
/*
18
Y X Y Z X Z X X Z Z Y Y Z Y Y Z X X
*/
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |