Cod sursa(job #2867782)

Utilizator Abramiuc_AndreiAbramiuc Andrei Abramiuc_Andrei Data 10 martie 2022 15:59:53
Problema Subsir crescator maximal Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");

int a[100002],n,rasp[100002],lrasp;

int cbin(int st,int dr,int val)
{
     int mij;
     while(st<=dr)
     {
          mij=st+(dr-st)/2;
          if(rasp[mij]>=val)
               dr=mij-1;
          else
               st=mij+1;
     }
     return st;
}
int main()
{
     fin>>n;
    for(int i=1;i<=n;i++)
          fin>>a[i];

     rasp[0]=0;
    for(int i=1;i<=n;i++){
          if(rasp[lrasp]<a[i])
               rasp[++lrasp]=a[i];
          else{
               int poz=cbin(1,lrasp,a[i]);
               rasp[poz]=a[i];
          }
    }

    fout<<lrasp<<endl;
    for(int i=1;i<=lrasp;i++)
          fout<<rasp[i]<<' ';
    return 0;
}