제출 #96489

#제출 시각아이디문제언어결과실행 시간메모리
96489KLPPHidden Sequence (info1cup18_hidden)C++14
0 / 100
380 ms580 KiB
#include<bits/stdc++.h> #include "grader.h" using namespace std; 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; maxLength++; //cout<<obj<<" "<<zeros<<" "<<ones<<" "<<maxLength<<endl; int answer[zeros+1][zeros+1]; for(int a=0;a<=zeros;a++){ for(int b=0;a+b<=zeros;b++){ int lo,hi; lo=0; hi=maxLength-a-b+1; //cout<<hi<<endl; while(hi-lo>1){//cout<<hi<<" "<<lo<<endl; int mid=(lo+hi)/2; //cout<<"M"<<mid<<endl; for(int i=0;i<a;i++)query.push_back(obj); for(int i=0;i<mid;i++)query.push_back(1-obj); for(int i=0;i<b;i++)query.push_back(obj); //cout<<"Sz"<<query.size()<<endl; /*for(int i=0;i<query.size();i++)cout<<query[i]<<" "; cout<<endl;*/ if(!isSubsequence(query)){ hi=mid; }else lo=mid; query.clear(); }//cout<<hi<<" "<<lo<<endl; answer[a][b]=lo; //cout<<lo<<" "; }//cout<<endl; } int S[zeros+1]; for(int i=0;i<=zeros;i++){ S[i]=answer[0][zeros-i]; for(int j=0;j<i;j++)S[i]=max(S[i],S[j]+answer[j+1][zeros-i]); } int D[zeros+1]; D[0]=S[0]; for(int i=0;i<zeros;i++)D[i+1]=S[i+1]-S[i]; for(int i=0;i<=zeros;i++){ for(int j=0;j<D[i];j++)ans.push_back(1-obj); if(i!=zeros)ans.push_back(obj); } return ans; }

컴파일 시 표준 에러 (stderr) 메시지

grader.cpp: In function 'int main()':
grader.cpp:28:43: warning: format '%d' expects argument of type 'int', but argument 3 has type 'std::vector<int>::size_type {aka long unsigned int}' [-Wformat=]
     fprintf (fifo_out, "%d\n", ans.size ());
                                ~~~~~~~~~~~^
grader.cpp:29:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i=0; i<ans.size () && i < N; i++)
                   ~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...