Cod sursa(job #2519082)

Utilizator Amelia_MilcuMilcu Amelia Amelia_Milcu Data 7 ianuarie 2020 11:20:14
Problema Subsir crescator maximal Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>
#define NMAX 100005
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n,lg,st,dr,mid,i,k=0,poz,ult,m;
int v[NMAX],x[NMAX],sol[NMAX],L[NMAX];
int main()
{
    fin>>n;
    for(i=1;i<=n;i++)
    {
        fin>>v[i];
        st=1;
        dr=k;
        poz=k+1;
        while(st<=dr)
        {
            mid=(st+dr)/2;
            if(v[i]>x[mid])
                st=mid+1;
            else{
                dr=mid-1;
                poz=mid;
            }

        }
        x[poz]=v[i];
        L[i]=poz;
        if(poz==k+1)
            k++;
    }
    fout<<k<<"\n";
    lg=k;
    i=n;
    m=0;
    ult=2000005;
    while(lg>0)

    {
        if(L[i]==lg&&v[i]<ult)
        {
            m++;
            sol[m]=v[i];
            lg--;
            ult=v[i];
        }
        i--;
    }
    for(i=m;i>=1;i--)
        fout<<sol[i]<<" ";
    return 0;
}