# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
317593 | daniel920712 | Hidden Sequence (info1cup18_hidden) | C++14 | 147 ms | 384 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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++)
{
//printf("%d %d\n",i,x);
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(!isSubsequence(temp))
{
con[i]=y-j+1;
break;
}
}
}
}
//printf("%d %d\n",i,x);
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
{
for(i=0;i<=y;i++) have.insert(i);
for(i=1;have.size()>1;i++)
{
Not.clear();
for(auto j:have)
{
temp.clear();
for(k=0;k<=y;k++)
{
if(j==k) for(l=0;l<i;l++) temp.push_back(0);
if(k!=y) temp.push_back(1);
}
if(!isSubsequence(temp))
{
//printf("bb %d\n",j);
con[j]=i-1;
x-=(i-1);
Not.push_back(j);
}
}
for(auto j:Not) have.erase(j);
}
if(!have.empty()) con[*have.begin()]=x;
for(i=0;i<=y;i++)
{
for(j=0;j<con[i];j++) ans.push_back(0);
if(i!=y) ans.push_back(1);
}
return ans;
}
}
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |