Cod sursa(job #2956654)

Utilizator dorupopDoru Pop dorupop Data 20 decembrie 2022 08:21:43
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.69 kb
#include <iostream>
#include <cstring>
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n, v[100001], tata[100001],a[100001];
void reconst(int k){
   if(k>0)
   {
       reconst(tata[k]);
fout<<v[k]<<" ";
   }

}
int main()
{
   fin>>n;
   for(int i=1;i<=n;i++)
      fin>>v[i];
   int k=0;
   for(int i=1;i<=n;i++){
       int st=1,dr=k;
       while(st<=dr){
          int mid=(st+dr)/2;
          if(v[i]<=v[a[mid]])
              dr=mid-1;
          else
              st=mid+1;
       }
       if(st>k)
          k++;
       a[st]=i;
       tata[i]=a[st-1];

   }
   fout<<k<<"\n";
   reconst(a[k]);
    return 0;
}