# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
689865 | alexdd | Hidden Sequence (info1cup18_hidden) | C++17 | 64 ms | 304 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;
int n;
int totx,toty;
int suff[205];///suff[i] = cate y-uri exista dupa al i-lea x
vector<int> solve(int x, int y)///avem mai putine x-uri decat y-uri
{
vector<int> allx;
for(int i=1;i<=(n+1)/2;i++)
allx.push_back(x);
for(int i=(n+1)/2;i>=0;i--)
{
if(isSubsequence(allx))
{
totx=i;
toty=n-i;
break;
}
allx.pop_back();
}
vector<int> aux;
for(int i=totx;i>=0;i--)
{
///calc suff[i]
if(suff[i+1]>=totx-i)///punem x-uri dupa
{
aux.clear();
for(int j=1;j<=totx;j++)
aux.push_back(x);
suff[i]=0;
for(int j=1;j<=toty;j++)
{
aux.insert(aux.begin()+i,y);
if(!isSubsequence(aux))
break;
suff[i]=j;
}
suff[i]+=suff[i+1];
}
else///nu punem nimic dupa
{
aux.clear();
for(int j=1;j<=i;j++)
aux.push_back(x);
suff[i]=0;
for(int j=1;j<=toty;j++)
{
aux.push_back(y);
if(!isSubsequence(aux))
break;
suff[i]=j;
}
}
}
vector<int> sol;
for(int i=0;i<=totx;i++)
{
for(int j=1;j<=suff[i]-suff[i+1];j++)
sol.push_back(y);
if(i<totx)
sol.push_back(x);
}
return sol;
}
vector<int>findSequence(int N)
{
n=N;
vector<int> all0;
for(int i=1;i<=(n+1)/2;i++)
{
all0.push_back(0);
}
if(!isSubsequence(all0))
return solve(0,1);
else
return solve(1,0);
}
/**
presupunem ca exista mai putine 0-uri decat 1-uri
*/
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |