Cod sursa(job #2304558)

Utilizator TheSeekerRobert Cristian Dobra TheSeeker Data 18 decembrie 2018 10:34:44
Problema Subsir crescator maximal Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.67 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]=v[i];
    else{
        int mid=(st+dr)/2;
        if (v[i]<=D[mid])
            cautare(st,mid,i);
        else
            cautare(mid+1,dr,i);
    }
}

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