Cod sursa(job #2850532)

Utilizator ciobyCiobanu Vlasie cioby Data 16 februarie 2022 21:58:00
Problema Subsir crescator maximal Scor 55
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 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];
int f[dim];

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

        if (v[i]>sir[k]){
            sir[++k]=v[i];
        }
        else{
            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;
                }
            }
            if (f[i]==0){
                    sir[poz]=v[i];
                    f[i]=1;
            }
        }
    }
    fout<<k<<'\n';
    for (int i=1;i<=k;i++)
        fout<<sir[i]<<' ';

}

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