Cod sursa(job #1146646)

Utilizator a.raduAndrei Radu a.radu Data 19 martie 2014 10:25:55
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <cstdio>

using namespace std;
long n,i,a[100010],y,b[100010],c[100010],max,p,len,l,pp,crt;
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%ld",&n);
for (i=1; i<=n; i++)
    {
    scanf("%ld",&a[i]);
    for (y=0; y<i; y++)
            if (a[y]<a[i])
                if (b[y]+1>b[i])
                    b[i]=b[y]+1;
    if (max<b[i])
        {
        max=b[i];
        p=i;
        }
    }
 l=b[p]; l--; pp=p;
crt=1; c[1]=a[p]; p--;
do{
while (!((b[p]==l)&&(a[p]<a[pp]))) p--;

    crt++; c[crt]=a[p]; p--; l--;

}while (l>0);
printf("%ld\n",b[pp]);
for (p=b[pp]; p; p--)
    printf("%ld ",c[p]);
return 0;
}