Cod sursa(job #1770409)

Utilizator RaduXD1Nicolae Radu RaduXD1 Data 4 octombrie 2016 11:20:41
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<iostream>
#include<fstream>
#include<algorithm>

using namespace std;
ifstream fin("scmax");
ofstream fout("scmax.out");
int n,i,lung,d[100001],v[100001],bac[100001],u[100001],m,x,st,dr,mid;

int main()
{
    fin>>n;
    fin>>v[1];
    d[1]=1;
    lung=1;
    for(i=2;i<=n;i++)
    {
        fin>>v[i];
        st=1;
        dr=lung;
        while(st<=dr)
        {
            mid=(st+dr)/2;
            if(v[d[mid]]>=v[i])
                dr=mid-1;
            else
                st=mid+1;
        }
        if(st>lung)
            lung++;
        d[st]=i;
        bac[i]=d[st-1];
    }
    fout<<lung<<"\n";
    x=d[lung];
    while(x!=0)
    {
        u[++m]=v[x];
        x=bac[x];
    }
    for(i=m;i>=1;i--)
        fout<<u[i]<<" ";
    fin.close();
    fout.close();
    return 0;
}