Cod sursa(job #2291428)

Utilizator AlexBolfaAlex Bolfa AlexBolfa Data 27 noiembrie 2018 23:15:10
Problema Subsir crescator maximal Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>
#define MAX 100004
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n,Best[MAX],x,maxi,s,d,mij;
int V[MAX];
int main(){
    int i,j;
    fin>>n;
    for(i=0;i<n;++i){
        fin>>x;
        if(x>Best[maxi]){
            ++maxi;
            Best[maxi]=x;
            for(j=1;j<=maxi;++j)V[j]=Best[j];
        }else{
            s=-1; d=maxi;
            while(d-s>1){
                mij=(s+d)/2;
                if(Best[mij]<x)s=mij;
                else d=mij;
            }
            if(s!=-1)
                Best[s+1]=x;
        }
    }
    fout<<maxi<<'\n';
    for(i=1;i<=maxi;++i){
        fout<<V[i]<<' ';
    }
    fout.close();
    return 0;
}