Cod sursa(job #1539719)

Utilizator OFY4Ahmed Hamza Aydin OFY4 Data 1 decembrie 2015 14:51:48
Problema Subsir crescator maximal Scor 55
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<stdio.h>
#include<algorithm>

#define nmax 100005

using namespace std;

int n,val,v[nmax],q[nmax],p[nmax],s[nmax];

int main()
{
    freopen("scmax.in", "r", stdin);
    freopen("scmax.out", "w", stdout);

    scanf("%d", &n);

    for(int i=0;i<n;++i)
    {
        scanf("%d", &v[i]);

        int foya=0;

        for(int j=1<<17; j ; j/=2)
        {
            if(j+foya<=val && v[q[j+foya]]<v[i])
            {
                foya+=j;
            }
        }

        p[i]=q[foya];
        q[foya+1]=i;
        val= max(val, foya+1);
    }

    int mamaliga=q[val];

    for(int i=val; i;--i)
    {
        s[i]=v[mamaliga];
        mamaliga=p[mamaliga];
    }

    printf("%d\n", val);

    for(int i=1;i<=val;++i)
    {
        printf("%d", s[i]);
    }
}