Submission #1294625

#TimeUsernameProblemLanguageResultExecution timeMemory
1294625simona1230Ancient Machine (JOI21_ancient_machine)C++20
30 / 100
55 ms7924 KiB
#include "Anna.h"
#include <bits/stdc++.h>

namespace
{

}

void Anna(int N, std::vector<char> S) {
    for(int i=0;i<N;i++)
        if(S[i]=='X')Send(1);
        else Send(0);

    /*int x=-1;
    int z=-1;
    for(int i=0;i<N;i++)
    {
        if(S[i]=='X'&&x==-1)
        {
            x=i;
            for(int j=0;j<=16;j++)
                if((1<<j)&x)Send(1);
                else Send(0);
        }
    }

    for(int i=N-1;i>=0;i--)
    {
        if(S[i]=='Z'&&z==-1)
        {
            z=i;
            for(int j=0;j<=16;j++)
                if((1<<j)&z)Send(1);
                else Send(0);
        }
    }*/

    for(int i=0;i<N;i++)
        if(S[i]=='Y')Send(1);
        else Send(0);
}
#include "Bruno.h"
#include <bits/stdc++.h>

namespace
{
    char c[100001];
    int h[100001];
    int lx[100001];
    int lz[100001];
}

void Bruno(int N, int L, std::vector<int> A)
{
    /*if(A.size()!=N+34)
    {
        for(int i=0;i<N;i++)
            Remove(i);
        return;
    }

    int x=0;
    for(int i=0;i<=16;i++)
        if(A[i]==1)x+=(1<<i);
    for(int i=17;i<=34;i++)
        if(A[i]==1)z+=(1<<j)*/

    for(int i=0;i<N;i++)
        c[i]='Z',h[i]=0;
    for(int i=0;i<N;i++)
        if(A[i]==1)c[i]='X';
    for(int i=N;i<2*N;i++)
        if(A[i]==1)c[i-N]='Y';

    std::vector<int> v,id;
    for(int i=0;i<N;i++)
    {
        if(c[i]=='Y')
        {
            if(v.size()&&v[v.size()-1]==1)
            {
                v.push_back(2);
                id.push_back(i);
            }
            else Remove(i);
        }
        else if(c[i]=='X')
        {
            if(v.size()==0||v[v.size()-1]==2)
                v.push_back(1),
                id.push_back(i);
            else Remove(i);
        }
        else
        {
            if(v.size()>1&&v.size()%2==1)
            {
                Remove(id[id.size()-1]);
                v.pop_back(),
                id.pop_back();
            }

            while(v.size()>3)
            {
                Remove(id[id.size()-1]);
                id.pop_back();
                v.pop_back();
                Remove(id[id.size()-1]);
                id.pop_back();
                v.pop_back();
            }

            if(v.size()==2)
            {
                Remove(id[id.size()-1]);
                id.pop_back();
                v.pop_back();
            }

            Remove(i);
        }
    }

    for(int i=0;i<id.size();i++)
        Remove(id[i]);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...