Cod sursa(job #1401199)

Utilizator 4ONI2015oni2015 4ONI2015 Data 25 martie 2015 18:22:05
Problema Subsir crescator maximal Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <bits/stdc++.h>

using namespace std;
int p,sol,i,n,a[100005],back[100005],v[100005];
bool crit(int x,int y)
{
    return a[x]<a[y];
}
int main()
{
    freopen("scmax.in","r",stdin);
    freopen("scmax.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
        p=lower_bound(v+1,v+sol+1,i,crit)-v;
        back[i]=v[p-1];
        if(p>sol)
        {
            sol=p;
            v[p]=i;
            continue;
        }
        if(a[i]<a[v[p]])
            v[p]=i;
    }
    printf("%d\n",sol);
    for(i=1;i<=sol;i++)
        printf("%d ",a[v[i]]);
    return 0;
}