Cod sursa(job #2654553)

Utilizator mitocaru_marioMitocaru Mario-Alexandru mitocaru_mario Data 1 octombrie 2020 16:24:19
Problema Subsir crescator maximal Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include<fstream.h>
#define Nmax 100001

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

int a[Nmax],b[Nmax],c[Nmax],na,nb;

int poz;

void cautbin(int val)
{
    int st=1,end=nb,mij;
    poz=-1;
    while(st<=end)
    {
        mij=(st+end)/2;
        if(b[mij]>=val)
        {
            poz=mij;
            end=mij-1;
        }
        else
            st=mij+1;
    }
}

int main()
{
    int i,j;
    fin>>na;
    for(i=1; i<=na; i++)
    {
        fin>>a[i];
        cautbin(a[i]);
        if(poz==-1)
            b[c[i]=++nb]=a[i];
        else
            b[c[i]=poz]=a[i];
    }
    fout<<nb<<'\n';
    for(i=na,j=nb; j>0; j--)
    {
        while(c[i]!=j)
            i--;
        b[j]=a[i];
    }
    for(i=1; i<=nb; i++)
        fout<<b[i]<<' ';
    fout<<'\n';
    return 0;
}