Cod sursa(job #2850515)

Utilizator ciobyCiobanu Vlasie cioby Data 16 februarie 2022 21:24:55
Problema Subsir crescator maximal Scor 55
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <bits/stdc++.h>
#define dim 150000
using namespace std;

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


int n;
int v[dim];
int d[dim];
int sir[dim];

void citire()
{
    fin>>n;
    for (int i=1;i<=n;i++)
        fin>>v[i];
}
void sclm()
{
    ///sclm cautare binanara
    int k=1;
    sir[k]=v[1];
    for (int i=2;i<=n;i++){

        if (v[i]>sir[k]){
            sir[++k]=v[i];
        }
        else if (v[i]<sir[k]){
            int st=1;
            int dr=k;
            int poz=k+1;
            while(st<=dr)
            {
                int mij=(st+dr)/2;
                if (sir[mij]>v[i])
                {
                    poz=mij;
                    dr=mij-1;
                }
                else
                {
                    st=mij+1;
                }
            }
            sir[poz]=v[i];
        }
    }
    fout<<k<<'\n';
    for (int i=1;i<=k;i++)
        fout<<sir[i]<<' ';

}

int main()
{
    citire();
    sclm();
}