Cod sursa(job #2709573)

Utilizator rARES_4Popa Rares rARES_4 Data 20 februarie 2021 14:09:18
Problema Subsir crescator maximal Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("scmax.in");
ofstream g ("scmax.out");
int n,cnt,v[100001];
int indice[100001],sir[100001];
int cb(int nr)
{
    int mij,st = 0,dr = cnt,rasp = cnt;
    while(st<=dr)
    {
        mij = (st+dr)/2;
        if(sir[mij] == nr)
            return mij;
        if(sir[mij]<nr)
        {
            st = mij + 1;
        }
        else
            if(sir[mij] > nr)
        {
            dr = mij - 1;
            rasp = mij;
        }
    }
    return rasp;
}
int main()
{
   f >> n;
   for(int i = 1;i<=n;i++)
   {
       f >> v[i];
   }
   for(int i = 1;i<=n;i++)
   {
       int indice_in_sir_final;
       indice_in_sir_final = cb(v[i]);
       if(indice_in_sir_final == cnt)
       {
           cnt++;
       }
       indice[i] = indice_in_sir_final;
       sir[indice_in_sir_final] = v[i];

   }
   g << cnt<< '\n';
   for(int i = 0;i<cnt;i++)
    g << sir[i]<<" ";
}