Cod sursa(job #2714863)

Utilizator AndiAndi39Sabo Andrei Claudiu AndiAndi39 Data 2 martie 2021 16:49:00
Problema Subsir crescator maximal Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.22 kb
#include<iostream>
#include<fstream>

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

#define nrm 100100
int n,v[nrm],scmax=0;
int rez[nrm];

int cautarebinara(int right, int e, int rez[])
{
    int left=1;
    while(left<=right)
    {
        int middle=(left+right)/2;
        if(e>rez[middle])
        {
            left=middle+1;
        }
        else
        {
            if(e<rez[middle])
            {
                right=middle-1;
            }
            else
            {
                return left;
            }
        }
    }
}

void citire()
{
    fin>>n;
    for(int i=1;i<=n;i++)
    {
        fin>>v[i];
        if(v[i]>rez[scmax])
        {
            scmax++;
            rez[scmax]=v[i];
            //cout<<v[i]<<" "<<endl;
        }
        else
        {
            //cout<<v[i]<<" "<<rez[scmax]<<endl;
            int position=cautarebinara(scmax,v[i],rez);
            rez[position]=v[i];
        }
    }
}

void afisare()
{
    fout<<scmax<<'\n';
    for(int i=1;i<=scmax;i++)
    {
        fout<<rez[i]<<" ";
    }
}

int main ()
{
    citire();
    afisare();
    fin.close();
    fout.close();
    return 0;
}