Pagini recente » Cod sursa (job #1826721) | Cod sursa (job #3229844) | Cod sursa (job #951667) | Cod sursa (job #1481919) | Cod sursa (job #299579)
Cod sursa(job #299579)
#include <stdio.h>
#define xy 100000
long long a[xy],l[xy],poz[xy],n;
void aranjare()
{
int i,j;
l[n]=1;poz[n]=-1;
for(i=n-1;i>0;i--)
for(l[i]=1, poz[i]=-1,j=i+1;j<=n;j++)
if(a[i]<=a[j] && l[i]<l[j]+1)
{l[i]=l[j]+1;poz[i]=j;
}
}
void max()
{//determin maximul din vectorul i
int max=l[1],pozmax=1;
for(int i=2;i<=n;i++)
if(max<l[i]) {max=l[i];pozmax=i;}
printf("%lld\n",max);
for(int i=pozmax;i!=-1;i=poz[i])
printf("%lld",a[i]);
}
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%lld",&n);
for(int i=1;i<=n;i++)
scanf("%lld",&a[i]);
aranjare();
max();
return 0;
}