Cod sursa(job #2540803)

Utilizator BlueLuca888Girbovan Robert Luca BlueLuca888 Data 7 februarie 2020 19:05:03
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <fstream>
#define MAXX 100010

using namespace std;

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

int n, m, st, dr, mid;
int v[MAXX], d[MAXX], t[MAXX];

void drum(int i){
     if(i != 0){
          drum(t[i]);
          fout<<v[i]<<" ";
     }
}

int main (){
     fin>>n;
     for(int i=1; i<=n; i++)
          fin>>v[i];

     m=1;
     d[1]=1;
     for(int i=2; i<=n; i++){
          st=1;
          dr=m;

          while(st <= dr){
               mid=(st+dr)/2;
               if(v[d[mid]] >= v[i])
                    dr=mid-1;
               else
                    st=mid+1;
          }

          if(st > m){
               m++;
               d[m]=i;
               t[i]=d[st-1];
          }else{
               d[st]=i;
               t[i]=d[st-1];
          }
     }

     fout<<m<<"\n";
     drum(d[m]);
     return 0;
}