Cod sursa(job #3210528)

Utilizator radu._.21Radu Pelea radu._.21 Data 6 martie 2024 15:42:38
Problema Subsir crescator maximal Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>

using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n,v[100001],best[100001],k;
int cb(int x){
    int st=1,dr=k,poz;
    while(st<=dr){
        int mij = (st+dr)/2;
        if(x<=best[mij])
            poz=mij,dr=mij-1;
        else
            st=mij+1;
    }
    return poz;
}
int main(){
    fin>>n;
    for(int i=1;i<=n;i++)
        fin>>v[i];
    k=1; best[k]=v[1];
    for(int i=2;i<=n;i++){
        int x = v[i];
        if(x>best[k])
            best[++k]=x;
        else{
            int poz = cb(x);
            best[poz]=x;
        }
    }
    fout<<k<<'\n';
    for(int i=1;i<=k;i++)
        fout<<best[i]<<" ";
    return 0;
}