Pagini recente » Cod sursa (job #692151) | Cod sursa (job #3273449) | Cod sursa (job #1173594) | Cod sursa (job #2588150) | Cod sursa (job #386139)
Cod sursa(job #386139)
/*
a[] -> numere din sir
lung[i] -> lung celui mai lung subsir care se termina cu a[i]
*/
#include<cstdio>
const int N=1<<17;
int a[N],lung[N],pred[N];
void scrie(int i)
{
if (i==0) return ;
scrie(pred[i]);
printf("%d ",a[i]);
}
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
int n;
scanf("%d",&n);
for (int i=1;i<=n;i++)
scanf("%d",&a[i]);
lung[1]=1;
int max=1,poz=1;
for (int i=2;i<=n;i++)
{
for (int j=2;j<i;j++)
if (lung[j]>lung[i] && a[j]<a[i])
{
lung[i]=lung[j];
pred[i]=j;
}
lung[i]++;
if (lung[i]>max)
{
max=lung[i];
poz=i;
}
}
printf("%d\n",max);
scrie(poz);
return 0;
}