|
code:
#include<bits/stdc++.h>
using namespace std;
int dp[111111];
int main()
{
int n;
int pre[11111];
int a[11111];
int path[11111];
while(cin>>n&&n)
{
memset(pre,0,sizeof(pre));
for(int i=1; i<=n; i++)
{
scanf("%d",&a[i]);
dp[i]=1;
pre[i]=i;
}
for(int i=2; i<=n; i++)
{
for(int j=1; j<i; j++)
{
if(a[j]<a[i]&&dp[j]+1>dp[i])
{
pre[i] = j;
dp[i]=dp[j]+1;
}
}
}
int Max = 1;
int index = 1;
for(int i=1; i<=n; i++)
{
if(dp[i] > Max)
{
Max = dp[i];
index = i;
}
}
int temp = Max;
while(pre[index] != index)
{
path[temp--] = index;
index = pre[index];
}
printf("The number is %d:", Max);
printf(" %d",index);
for(int i=2; i<=Max; i++)
{
printf(" %d",path[i]);
}
printf("\n");
}
return 0;
}