Submission #1321049

#TimeUsernameProblemLanguageResultExecution timeMemory
1321049hoangmc2009Hidden Sequence (info1cup18_hidden)C++17
0 / 100
2 ms416 KiB
#include<bits/stdc++.h>
using namespace std;
//#define Graven
#ifndef Graven
#include "grader.h"
#endif
#ifdef Graven
int maxQ=0;
vector<int> F;
bool isSubsequence(const vector<int>& v)
{
    if (v.size()>maxQ) maxQ=v.size();
    for(int i=0,j=0;i<v.size();++i)
    {
        while(j<F.size() and v[i]!=F[j]) ++j;
        if(j==F.size()) return false;
        else ++j;
    }
    return true;
}
#endif
vector<int> findSequence(int N)
{
    int c0=-1,c1=-1;
    vector<int> tmp,res;
    for(int i=1;i<=(N/2+1);++i)
    {
        tmp.push_back(0);
        if(!isSubsequence(tmp))
        {
            c0=i-1;
            c1=N-c0;
            break;
        }
    }
    if(c0==-1)
    {
        tmp.clear();
        for(int i=1;i<=(N/2+1);++i)
        {
            tmp.push_back(1);
            if(!isSubsequence(tmp))
            {
                c1=i-1;
                c0=N-c1;
                break;
            }
        }
    }
    if(c0<=c1)
    {
        for(int i=c0;i>=0;--i)
        {
            bool ok=0;
            for(int j=1;j<=c1/2+1;++j)
            {
                tmp.clear();
                for(int k=1;k<=i;++k) tmp.push_back(0);
                for(int k=1;k<=j;++k) tmp.push_back(1);
                for(int k=1;k<=c0-i;++k) tmp.push_back(0);
                if(!isSubsequence(tmp))
                {
                    c1-=j-1; cout<<j-1<<endl;
                    for(int k=1;k<j;++k) res.push_back(1);
                    ok=1; break;
                }
            }
            if(!ok)
            {
                cout<<c1<<endl;
                while(c1>0) res.push_back(1),--c1;
            }
            if(i>0) res.push_back(0);
        }
    }
    else
    {
        for(int i=c1;i>=0;--i)
        {
            bool ok=0;
            for(int j=1;j<=c0/2+1;++j)
            {
                tmp.clear();
                for(int k=1;k<=i;++k) tmp.push_back(1);
                for(int k=1;k<=j;++k) tmp.push_back(0);
                for(int k=1;k<=c1-i;++k) tmp.push_back(1);
                if(!isSubsequence(tmp))
                {
                    c0-=j-1;
                    for(int k=1;k<j;++k) res.push_back(0);
                    ok=1; break;
                }
            }
            if(!ok) {while(c0>0) res.push_back(0),--c0;}
            if(i>0) res.push_back(1);
        }
    }
    reverse(res.begin(),res.end());
    return res;
}
#ifdef Graven
int main()
{
    int n,x; cin>>n; maxQ=0;
    for(int i=1;i<=n;++i)
    {
        cin>>x;
        F.push_back(x);
    }
    vector<int> G=findSequence(n);
    if(G.size()!=F.size())
    {
        cout<<"Different lengths: "<<G.size()<<"!="<<n<<"\n";
        for(int& x:G) cout<<x<<" ";
        cout<<'\n'; return 0;
    }
    for(int i=0;i<G.size();++i)
    {
        if(G[i]!=F[i])
        {
            cout<<"WA postion at "<<i+1<<'\n';
            for(int& x:G) cout<<x<<" ";
            cout<<'\n'; return 0;
        }
    }
    cout<<"Ok, biggest queried length "<<maxQ;
    return 0;
}
#endif

Compilation message (stderr)

grader.cpp: In function 'int main()':
grader.cpp:28:26: warning: format '%d' expects argument of type 'int', but argument 3 has type 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wformat=]
   28 |     fprintf (fifo_out, "%d\n", ans.size ());
      |                         ~^     ~~~~~~~~~~~
      |                          |              |
      |                          int            std::vector<int>::size_type {aka long unsigned int}
      |                         %ld
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...