답안 #317600

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
317600 2020-10-30T03:47:43 Z daniel920712 Hidden Sequence (info1cup18_hidden) C++14
100 / 100
147 ms 384 KB
#include<bits/stdc++.h>
#include "grader.h"

using namespace std;
vector < pair < vector < int > , int > > all;
vector < int > temp;
vector < int > tt;
vector < int > ans;
vector < int > ans2;
vector < int > ans3;
set < int > have;
vector < int > Not;
int con[5005]={0};

vector < int > findSequence (int N)
{
    int i,j,k,l,ok=0,now=0,x1=0,y1=0,x,y;
    if(N<=10)
    {
        for(i=0;i<(1<<(N/2+1));i++)
        {
            temp.clear();
            for(j=0;j<(N/2+1);j++)
            {
                if(i&(1<<j)) temp.push_back(1);
                else temp.push_back(0);
            }
            all.push_back(make_pair(temp,isSubsequence(temp)));
        }
        for(i=0;i<(1<<N);i++)
        {
            temp.clear();
            for(j=0;j<N;j++)
            {
                if(i&(1<<j)) temp.push_back(1);
                else temp.push_back(0);
            }
            ok=1;
            for(auto j:all)
            {
                now=0;
                for(auto k:temp)
                {
                    if(now<N/2+1&&k==j.first[now]) now++;
                }
                if(now==N/2+1&&j.second==0) ok=0;
                if(now!=N/2+1&&j.second==1) ok=0;
            }
            if(ok) return temp;
        }
        temp.clear();
        return temp;
    }
    else
    {
        for(i=0;i<N/2+1;i++)
        {
            temp.push_back(0);
            if(!isSubsequence(temp))
            {
                x=i;
                break;
            }
        }
        temp.clear();
        if(i==N/2+1)
        {
            for(i=0;i<N/2+1;i++)
            {
                temp.push_back(1);
                if(!isSubsequence(temp))
                {
                    x=N-i;
                    break;
                }
            }
        }
        y=N-x;

        if(x<=N/2)
        {
            con[x+1]=N-x;
            for(i=1;i<=x;i++)
            {
                ok=0;
                for(j=0;j+(x-i+1)<=N/2+1;j++)
                {
                    temp.clear();
                    for(k=0;k<j;k++) temp.push_back(1);
                    for(k=0;k<x-i+1;k++) temp.push_back(0);
                    if(!isSubsequence(temp))
                    {
                        ok=1;
                        con[i]=j-1;
                        break;
                    }
                }

                if(!ok)
                {
                    for(j=0;1;j++)
                    {
                        temp.clear();
                        for(k=0;k<i;k++) temp.push_back(0);
                        for(k=0;k<j;k++) temp.push_back(1);
                        if(temp.size()>N/2+1||!isSubsequence(temp))
                        {
                            con[i]=y-j+1;
                            break;
                        }
                    }
                }

            }
            now=0;
            for(i=1;i<=x;i++)
            {
                while(now<con[i])
                {
                    ans.push_back(1);
                    now++;
                }
                ans.push_back(0);
            }
            while(now<con[i])
            {
                ans.push_back(1);
                now++;
            }
            return ans;


        }
        else
        {
            con[y+1]=N-y;
            for(i=1;i<=y;i++)
            {
                ok=0;
                for(j=0;j+(y-i+1)<=N/2+1;j++)
                {
                    temp.clear();
                    for(k=0;k<j;k++) temp.push_back(0);
                    for(k=0;k<y-i+1;k++) temp.push_back(1);
                    if(!isSubsequence(temp))
                    {
                        ok=1;
                        con[i]=j-1;
                        break;
                    }
                }

                if(!ok)
                {
                    for(j=0;1;j++)
                    {
                        temp.clear();
                        for(k=0;k<i;k++) temp.push_back(1);
                        for(k=0;k<j;k++) temp.push_back(0);
                        
                        if(temp.size()>N/2+1||!isSubsequence(temp))
                        {
                            con[i]=x-j+1;
                            break;
                        }
                    }
                }

            }
            now=0;
            for(i=1;i<=y;i++)
            {
                while(now<con[i])
                {
                    ans.push_back(0);
                    now++;
                }
                ans.push_back(1);
            }
            while(now<con[i])
            {
                ans.push_back(0);
                now++;
            }
            return ans;
        }

    }
}

Compilation message

hidden.cpp: In function 'std::vector<int> findSequence(int)':
hidden.cpp:106:39: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
  106 |                         if(temp.size()>N/2+1||!isSubsequence(temp))
      |                            ~~~~~~~~~~~^~~~~~
hidden.cpp:161:39: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
  161 |                         if(temp.size()>N/2+1||!isSubsequence(temp))
      |                            ~~~~~~~~~~~^~~~~~
hidden.cpp:17:15: warning: unused variable 'l' [-Wunused-variable]
   17 |     int i,j,k,l,ok=0,now=0,x1=0,y1=0,x,y;
      |               ^
hidden.cpp:17:28: warning: unused variable 'x1' [-Wunused-variable]
   17 |     int i,j,k,l,ok=0,now=0,x1=0,y1=0,x,y;
      |                            ^~
hidden.cpp:17:33: warning: unused variable 'y1' [-Wunused-variable]
   17 |     int i,j,k,l,ok=0,now=0,x1=0,y1=0,x,y;
      |                                 ^~
hidden.cpp:17:38: warning: 'x' may be used uninitialized in this function [-Wmaybe-uninitialized]
   17 |     int i,j,k,l,ok=0,now=0,x1=0,y1=0,x,y;
      |                                      ^
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
grader.cpp:29:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   29 |     for (int i=0; i<ans.size () && i < N; i++)
      |                   ~^~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 256 KB Output is correct: Maximum length of a query = 5
2 Correct 2 ms 384 KB Output is correct: Maximum length of a query = 6
3 Correct 1 ms 256 KB Output is correct: Maximum length of a query = 5
4 Correct 2 ms 384 KB Output is correct: Maximum length of a query = 5
5 Correct 1 ms 256 KB Output is correct: Maximum length of a query = 4
# 결과 실행 시간 메모리 Grader output
1 Correct 91 ms 384 KB Output is correct: Maximum length of a query = 83
2 Correct 98 ms 384 KB Output is correct: Maximum length of a query = 90
3 Correct 91 ms 256 KB Output is correct: Maximum length of a query = 96
4 Correct 67 ms 256 KB Output is correct: Maximum length of a query = 77
5 Correct 62 ms 256 KB Output is correct: Maximum length of a query = 95
6 Correct 30 ms 256 KB Output is correct: Maximum length of a query = 87
7 Correct 88 ms 288 KB Output is correct: Maximum length of a query = 97
8 Correct 73 ms 256 KB Output is correct: Maximum length of a query = 83
9 Correct 136 ms 384 KB Output is correct: Maximum length of a query = 101
10 Correct 147 ms 384 KB Output is correct: Maximum length of a query = 100
11 Correct 73 ms 256 KB Output is correct: Maximum length of a query = 96
12 Correct 66 ms 256 KB Output is correct: Maximum length of a query = 100
13 Correct 119 ms 256 KB Output is correct: Maximum length of a query = 101