Pagini recente » Cod sursa (job #3156908) | Cod sursa (job #2523999) | Cod sursa (job #483401) | Cod sursa (job #197665) | Cod sursa (job #775630)
Cod sursa(job #775630)
#include<iostream>
using namespace std;
int n,p[100001],t[100001],i,j,maxim,poz,bigMax,bigPoz;
long v[100001],minim;
int main()
{freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
for(i=1; i<=n; i++)
scanf("%d",&v[i]);
p[1]=1;
for(i=2; i<=n; i++)
{maxim=0; minim=2000000001; poz=0;
for(j=1; j<=i-1; j++)
{if(v[i]>v[j] && p[j]==maxim)
{if(v[j]<minim)
{poz=j;
minim=v[j];}
}
if(v[i]>v[j] && p[j]>maxim)
{maxim=p[j];
poz=j;
minim=v[j];}
}
t[i]=poz;
p[i]=maxim+1;
if(p[i]>bigMax)
{bigMax=p[i];
bigPoz=i;}
}
printf("%d\n",bigMax);
i=0;
while(bigPoz)
{p[bigMax-i]=bigPoz;
bigPoz=t[bigPoz];
i++;
}
for(int i=1; i<=bigMax; i++)
printf("%d ",v[p[i]]);
return 0;}