#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
using namespace std;
#define MAX 10000
int len[MAX+5],pre[MAX+5],seq[MAX+5],output[MAX+10];
int N,maX,highest;
int lis(int N)
{
int i,j;
for(i=0;i<N;i++)len[i]=1;
for(i=0;i<N;i++)
for(j=i+1;j<N;j++){if(seq[j]>seq[i]){ if(len[i]+1>len[j]){len[j]=len[i]+1;
pre[j]=i;
}
}
}
maX=0;
for(i=N-1;i>=0;i--){if(maX<len[i]){maX=len[i];highest=i;}
}
return maX;
}
void printlcs()
{ output[maX]=seq[highest];
for(int i=maX-1;i>0;i--){ output[i]=seq[pre[highest]];
highest=pre[highest];
}
for(int i=1;i<=maX;i++)cout<<output[i]<<endl;
return ;
}
int main()
{
int tc,t=0;
scanf("%d",&tc);
getchar();
char ch[20];
bool blank=false;
gets(ch);
while(tc--){int I=0;
while(gets(ch) &&strlen(ch))
{
//puts(ch);
int J=atoi(ch);
seq[I++]=J;
//cout<<J<<endl;
}
//cout<<I<<endl;
if(blank)cout<<endl;
blank=true;
int res=lis(I);
printf("Max hits: %d\n",res);
printlcs();
}
return 0;
}
কোন মন্তব্য নেই:
একটি মন্তব্য পোস্ট করুন