# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
96625 | KLPP | Hidden Sequence (info1cup18_hidden) | C++14 | 183 ms | 504 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<int> query;
bool q(int first, int a, int b){query.clear();
for(int i=0;i<a;i++)query.push_back(first);
for(int i=0;i<b;i++)query.push_back(1-first);
return isSubsequence(query);
}
vector < int > findSequence (int N)
{
int zeros,ones;
zeros=-1;
ones=-1;
for(int i=1;i<=N/2+1;i++){
vector<int> query(i);
for(int j=0;j<i;j++)query[j]=0;
if(!isSubsequence(query)){
zeros=i-1;
i=N/2+1;
}
}
if(zeros!=-1)ones=N-zeros;
for(int i=1;i<=N/2+1;i++){
vector<int> query(i);
for(int j=0;j<i;j++)query[j]=1;
if(!isSubsequence(query)){
ones=i-1;
i=N/2+1;
}
}
if(ones!=-1)zeros=N-ones;
vector<int> ans;
if(zeros==0){
for(int i=0;i<N;i++)ans.push_back(1);
return ans;
}
if(ones==0){
for(int i=0;i<N;i++)ans.push_back(0);
return ans;
}
vector<int> query;
int obj=0;
if(zeros>=ones){
obj=1;
swap(ones,zeros);
}
int maxLength=N/2+1;
//cout<<obj<<" "<<zeros<<" "<<ones<<endl;
int seq[zeros+1];
for(int i=1;i<=zeros;i++){
int k=zeros+1-i;
int m1,m2;
for(int j=0;i+j<=maxLength;j++){
if(q(obj,i,j))m1=j;
}
for(int j=0;k+j<=maxLength;j++){
if(q(1-obj,j,k))m2=j;
}
if(m1+i==maxLength){
m1=ones-m2;
}else{
m2=ones-m1;
}
//cout<<m1<<" A "<<m2<<endl;
seq[i-1]=m2;
}
seq[zeros]=ones;
for(int i=0;i<=zeros;i++){
if(i!=0){
for(int j=0;j<seq[i]-seq[i-1];j++)ans.push_back(1-obj);
}else{
for(int j=0;j<seq[i];j++)ans.push_back(1-obj);
}
if(i!=zeros)ans.push_back(obj);
}
return ans;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |