Submission #950800

#TimeUsernameProblemLanguageResultExecution timeMemory
950800andrei_boacaAncient Machine (JOI21_ancient_machine)C++17
5 / 100
52 ms8924 KiB
#include "Anna.h"
#include <bits/stdc++.h>
#include <vector>

using namespace std;

namespace
{
    int dir;
    vector<int> getsir(vector<char> s)
    {
        int n=s.size();
        int N=n;
        int zy=0,yx=0;
        for(int i=0;i+1<n;i++)
        {
            if(s[i]=='Z'&&s[i+1]=='Y')
                zy++;
            if(s[i]=='Y'&&s[i+1]=='X')
                yx++;
        }
        char cz='Z',cx='X';
        if(zy>yx)
        {
            dir=1;
            reverse(s.begin(),s.end());
            swap(cx,cz);
        }
        vector<int> rez;
        int lastz=-1;
        bool havex=0;
        for(int i=N-1;i>=0;i--)
            if(s[i]==cz)
            {
                lastz=i;
                break;
            }
        if(lastz==-1)
        {
            rez.push_back(0);
            return rez;
        }
        for(int i=0;i<N;i++)
        {
            if(s[i]==cx)
            {
                if(!havex)
                {
                    rez.push_back(1);
                    //rez.push_back(0);
                }
                else
                    rez.push_back(0);
                havex=1;
                continue;
            }
            if(!havex)
            {
                rez.push_back(0);
                continue;
            }
            if(s[i]==cz&&(i==N||s[i+1]=='Y'||i==lastz))
                rez.push_back(1);
            else
                rez.push_back(0);
        }
        return rez;
    }
}

void Anna(int N, std::vector<char> S)
{
    dir=0;
    vector<int> sol,sir;
    sir=getsir(S);
    int nr1=0;
    for(int i=1;i<sir.size();i++)
        assert(sir[i]+sir[i-1]<2);
    bool havex=0;
    int lastz=-1;
    for(int i=N-1;i>=0;i--)
        if(S[i]=='Z')
        {
            lastz=i;
            break;
        }
    for(int i=0;i<N;i++)
    {
        if(S[i]=='X')
        {
            if(!havex)
                Send(1);
            else
                Send(0);
            havex=1;
            continue;
        }
        if(!havex)
        {
            Send(0);
            continue;
        }
        if(S[i]=='Z'&&(i==N||S[i+1]=='Y'||i==lastz))
            Send(1);
        else
            Send(0);
    }
}
#include "Bruno.h"
#include <bits/stdc++.h>
#include <vector>

using namespace std;

namespace
{


}

void Bruno(int N, int L, std::vector<int> A)
{
    vector<int> vals;
    int lft=-1;
    for(int i=0;i<A.size();i++)
        if(A[i]==1)
        {
            lft=i;
            break;
        }
    if(lft==-1)
    {
        for(int i=0;i<N;i++)
            Remove(i);
        return;
    }
    for(int i=0;i<lft;i++)
        Remove(i);
    for(int i=lft+1;i<A.size();i++)
        if(A[i]==1)
        {
            for(int j=i-1;A[j]==0;j--)
                Remove(j);
            Remove(i);
        }
    for(int i=L-1;A[i]==0;i--)
        Remove(i);
    Remove(lft);
}

Compilation message (stderr)

Anna.cpp: In function 'void Anna(int, std::vector<char>)':
Anna.cpp:77:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   77 |     for(int i=1;i<sir.size();i++)
      |                 ~^~~~~~~~~~~
Anna.cpp:76:9: warning: unused variable 'nr1' [-Wunused-variable]
   76 |     int nr1=0;
      |         ^~~

Bruno.cpp: In function 'void Bruno(int, int, std::vector<int>)':
Bruno.cpp:17:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   17 |     for(int i=0;i<A.size();i++)
      |                 ~^~~~~~~~~
Bruno.cpp:31:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   31 |     for(int i=lft+1;i<A.size();i++)
      |                     ~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...