Cod sursa(job #2304580)

Utilizator Bogdan_BuzatuBuzatu Bogdan Mihai Bogdan_Buzatu Data 18 decembrie 2018 10:55:34
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>

using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n,d[100005],v[100005],t[100005],x,sol[100005],c,st,dr,mid;
int main(){

    fin>>n;
    for(int i=1;i<=n;i++){
        fin>>v[i];
    }

    v[n+1]=2000000005;
    for(int i=1;i<=n+1;i++){
        st=1;
        dr=c;
        while(st<=dr){
            mid=(st+dr)/2;
            if(v[i]>v[d[mid]]){
                st=mid+1;
            }
            else{
                dr=mid-1;
            }
        }
        if(st>c){
            c++;
        }
        d[st]=i;
        t[i]=d[st-1];

    }

    fout<<c-1<<"\n";
    x=n+1;
    for(int i=1;i<c;i++) {
        sol[i]=v[t[x]];
        x=t[x];
    }

    for(int i=c-1;i>=1;i--){
        fout<<sol[i]<<" ";
    }

}