Pagini recente » Cod sursa (job #98227) | Cod sursa (job #894126) | Cod sursa (job #827125) | Cod sursa (job #2640806) | Cod sursa (job #386143)
Cod sursa(job #386143)
/*
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=1;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;
}