Pagini recente » Diferente pentru probleme-de-taietura intre reviziile 81 si 82 | Monitorul de evaluare | Diferente pentru documentatie/textile intre reviziile 107 si 52 | Istoria paginii utilizator/hadarbianca | Cod sursa (job #457746)
Cod sursa(job #457746)
#include<iostream.h>
#define MAXN 100010
int n,v[ MAXN ],a[ MAXN ],last[ MAXN ],poz;
int sol[ MAXN ];
int main()
{
int max;
freopen("scmax.in", "r", stdin);
freopen("scmax.out", "w", stdout);
scanf("%d", &n);
for(int i = 1; i <= n; i++)
{
scanf("%d", &v[i]);
a[i]++;
}
for(int i=1 ;i <= n; i++)
for(int j= i + 1 ;j<=n; j++)
{
if(v[i] < v[j] && a[ i ] + 1 > a[ j ])
{
a[ j ] = a[ i ] + 1;
last[j]=i;
}
if( a[ j ] > max)
{
max = a[j];
poz=j;
}
}
printf("%d\n", max);
int nr = max;
while( poz )
{
sol[ nr-- ] = poz;
poz = last[ poz ];
}
for(int i=1;i<=max;i++)
printf("%d ", v[ sol[ i ]]);
printf("\n");
return 0;
}