Cod sursa(job #2556140)

Utilizator Virlan_CristianVirlan Cristian Alexandru Virlan_Cristian Data 24 februarie 2020 18:25:46
Problema Subsir crescator maximal Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <iostream>
#include <fstream>
#define NMAX 100005
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int v[NMAX],stiva[NMAX],n,k;
int cautare(int x)
{
    int st=1,dr=k,poz=1;
    while(st<=dr)
    {
        int mij=(st+dr)/2;
        if(x<=stiva[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];
    for(int i=1;i<=n;i++)
    {
        if(v[i]>stiva[k])
            stiva[++k]=v[i];
        else
        {
            int poz=cautare(v[i]);
            stiva[poz]=v[i];
        }
    }
    fout<<k<<'\n';
    for(int i=1;i<=k;i++)fout<<stiva[i]<<" ";
    return 0;
}