Cod sursa(job #2529330)

Utilizator mariamirabella2Bucur-Sabau Maria-Mirabela mariamirabella2 Data 23 ianuarie 2020 11:44:16
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>

using namespace std;

ifstream cin("scmax.in");
ofstream cout("scmax.out");

long long b,v[100005],n,k,d[100005],indi,maxi,l,index[100005],a[100005];

int caut(int x,int sf)
{
    int in=1,r=0,mij;
    while(in<=sf){
        mij=(in+sf)/2;
        if(v[index[mij]]<x){
            in=mij+1;
            r=mij;
        }
        else{
            sf=mij-1;
        }
    }
    return r;
}

int main()
{
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>v[i];
        b=caut(v[i],l);
        d[i]=b+1;
        if(b+1>l)
            l=b+1;
        index[b+1]=i;
        if(d[i]>maxi){
            maxi=d[i];
        }
    }
    cout<<maxi<<'\n';
    int maxi1=maxi;
    for(int i=n;i>=1&&maxi;i--)
    {
        if(d[i]==maxi)
        {
            a[maxi]=v[i];
            maxi--;
        }
    }
    for(int i=1;i<=maxi1;i++){
        cout<<a[i]<<" ";
    }
    return 0;
}