# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
689869 | alexdd | Hidden Sequence (info1cup18_hidden) | C++17 | 64 ms | 304 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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();
}
if(totx==0)
{
allx.clear();
for(int i=1;i<=n;i++)
allx.push_back(y);
return allx;
}
vector<int> aux;
for(int i=totx;i>0;i--)
{
///calc suff[i]
if(i+suff[i+1]>totx)///punem x-uri dupa
{
///folosim totx + cnty
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
{
///folosim i + cnty + suff[i+1]
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;
}
}
}
suff[0] = toty;
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
*/
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |