Pagini recente » Cod sursa (job #746266) | Cod sursa (job #81499) | Cod sursa (job #1075652) | Cod sursa (job #2475481) | Cod sursa (job #1127481)
#include <cstdio>
int n, best[100100], poz[100100], p, lgmax;
int a[100100];
void citire()
{
int i;
scanf("%d", &n);
for(i=1;i<=n;++i)
scanf("%d", &a[i]);
}
void dinamica()
{
int i, j;
best[n]=1;
poz[n]=-1;
for(i=n-1;i>=1;--i)
{
best[i]=1;
poz[i]=-1;
for(j=i+1;j<=n;++j)
if(best[i]<1+best[j]&&a[i]<a[j])
{
best[i]=1+best[j];
poz[i]=j;
if(best[i]>lgmax)
{
lgmax=best[i];
p=i;
}
}
}
}
void afisare()
{
int i;
i=p;
printf("%d\n", lgmax);
while(i!=-1)
{
printf("%d ", a[i]);
i=poz[i];
}
printf("\n");
}
void rezolva_problema()
{
citire();
dinamica();
afisare();
}
int main()
{
freopen("scmax.in", "r", stdin);
freopen("scmax.out", "w", stdout);
rezolva_problema();
return 0;
}