Cod sursa(job #2148139)

Utilizator denisa.checiuDenisa denisa.checiu Data 1 martie 2018 15:49:02
Problema Subsir crescator maximal Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include<fstream>
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
int v[100003], l[100003], best[100003];
int nr;
int caut(int x)
{
    int mij, st, dr;
    st=1;
    dr=nr;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        if(x<=v[l[mij]]) dr=mij-1;
        else st=mij+1;
    }
    return dr;
}
int main()
{
    int n,i,poz;
     nr=1;
    in>>n;
    for(i=1; i<=n; i++)
        in>>v[i];
    l[0]=0;
    l[1]=1;
    for(i=2; i<=n; i++)
    {
        poz=caut(v[i]);
        best[i]=poz+1;
        if(poz+1<=nr) { if(v[i]<v[l[poz+1]]) l[poz+1]=i; }
        else {nr++; l[nr]=i; }
    }
    out<<nr<<"\n";
    for(i=1; i<=nr; i++)
        out<<v[l[i]]<<" ";
    return 0;
}