Cod sursa(job #2304562)

Utilizator TheSeekerRobert Cristian Dobra TheSeeker Data 18 decembrie 2018 10:39:42
Problema Subsir crescator maximal Scor 55
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.68 kb
#include <fstream>
using namespace std;

ifstream fin ("scmax.in");
ofstream fout("scmax.out");

int n,v[100005],D[100005],i,k;

void cautare(int st,int dr,int i){
    if (st>dr)
        D[st]=i;
    else{
        int mid=(st+dr)/2;
        if (v[i]<v[D[mid]])
            dr=mid-1;
        else
            st=mid+1;
        cautare(st,dr,i);
    }
}

int main(){
    fin>>n;
    for (i=1;i<=n;i++)
        fin>>v[i];
    for (i=1;i<=n;i++){
        if (v[i]>v[D[k]])
            D[++k]=i;
        else
            cautare(1,k,i);
    }
    fout<<k<<'\n';
    for (i=1;i<=k;i++)
        fout<<v[D[i]]<<" ";
    fin.close();
    fout.close();
    return 0;
}