Cod sursa(job #1238155)

Utilizator PTAdrian64Pop-Tifrea Adrian PTAdrian64 Data 5 octombrie 2014 19:56:52
Problema Subsir crescator maximal Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <cstdio>
#define max_n 100020
#define maxval 2000000020

using namespace std;

int n,a[max_n],p[max_n],m[max_n];

void btr(int k){
  if(!k)return;
  btr(p[k]);
  printf("%d ",a[k]);
}

int main(void){
  freopen("scmax.in","r",stdin);
  freopen("scmax.out","w",stdout);
  scanf("%d",&n);
  int i=0,l=0;
  for(i = 0;i<n;i++){
     scanf("%d", &a[i]);
     int fl=1,ll=l,md;
     while(fl<=ll){
        md=fl+(ll-fl)/2;

        if(a[m[md]]<a[i])
            fl=md+1;
        else

            ll=md-1;
     }
     int nl=fl;

     p[i]=m[fl-1];

     if(nl>l)l=nl;
     m[nl]=i;
  }
  printf("%d\n",l);

  btr(m[l]);
}