Pagini recente » Cod sursa (job #1729805) | Cod sursa (job #2046507) | Cod sursa (job #1515189) | Cod sursa (job #2481475) | Cod sursa (job #383745)
Cod sursa(job #383745)
#include<stdio.h>
const int N=100008;
int n,v[N],a[N],pred[N],rez,r[N],pz;
void read()
{
scanf("%d",&n);
for( int i=1 ; i<=n ; ++i )
scanf("%d",&a[i]);
}
void solve()
{
int max,pm;
pred[1]=-1;
v[1]=1;
for( int i=1 ; i<=n ; ++i )
{
max=0;
for( int j=1 ; j<i ; ++j )
if( j<i && a[j]<a[i] )
if( v[j]>max )
{
max=v[j];
pm=j;
}
if(max!=0)
{
v[i]=max+1;
pred[i]=pm;
}
else
{
v[i]=1;
pred[i]=-1;
}
if(v[i]>v[rez])
rez=i;
}
}
void afis()
{
printf("%d\n",v[rez]);
while( rez!=-1 )
{
r[++pz]=rez;
rez=pred[rez];
}
while(pz!=0)
{
printf("%d ",a[r[pz]]);
pz--;
}
}
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
read();
solve();
afis();
return 0;
}