Cod sursa(job #2675639)
Utilizator | Cocheci Cristiana cristiana.cocheci | Data | 22 noiembrie 2020 10:51:23 |
---|---|---|---|
Problema | Subsir crescator maximal | Scor | 70 |
Compilator | c-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.9 kb |
#include <stdio.h>
#include <stdlib.h>
#define N 100000
int v[N],l[N],n;
void subsir(int p)
{
int i=p-1;
while(i>=0 && (v[i]>=v[p] || l[i]!= l[p]-1))
{
i--;
}
if(i>=0)
{
subsir(i);
}
printf("%d ",v[p]);
return;
}
int main()
{
int lc,j,imax=0,i;
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&v[i]);
}
l[0]=1;
for(i=1;i<n;i++)
{
l[i]=0;
lc=0;
for(j=0;j<i;j++)
{
if(v[j]<v[i])
{
if(l[j]>lc)
{
lc=l[j];
}
}
}
l[i]=1+lc;
if(l[i]>l[imax])
{
imax=i;
}
}
printf("%d\n",l[imax]);
subsir(imax);
return 0;
}