Pagini recente » Cod sursa (job #2834597) | Cod sursa (job #682396) | Cod sursa (job #2864836) | Cod sursa (job #2389411) | Cod sursa (job #1857707)
#include<cstdio>
const int Nmax=100000;
int v[Nmax+1];
int vv[Nmax+1];
int v1[Nmax+1];
int main()
{
int n;
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d ",&n);
for(int i=1;i<=n;i++)
{
scanf("%d ",&v[i]);
}
int max1=0,poz=0;
for(int i=1;i<=n;i++)
{
int max=0;
for(int j=i;j>=1;j--)
{
if(v[i]>v[j] && vv[j]>max)
{
max=vv[j];
}
}
vv[i]=max+1;
if(vv[i]>max1)
{
max1=vv[i];
poz=i;
}
}
printf("%d\n",max1);
int pp=0,e=0;
while(pp==0)
{
int q=0;
for(int i=poz;i>=1 && q==0;i--)
{
if(vv[i]==vv[poz]-1)
q=i;
}
//printf("%d ",v[poz]);
v1[++e]=poz;
poz=q;
if(vv[poz]==0 || poz==1)
pp=1;
}
//rintf("%d ",poz);
if(poz!=0)
v1[++e]=poz;
for(int i=e;i>=1;i--)
{
printf("%d ",v[v1[i]]);
}
return 0;
}