Cod sursa(job #780756)

Utilizator oana_popfmi - pop oana oana_pop Data 21 august 2012 11:24:54
Problema Subsir crescator maximal Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
#define MAX 100010
#include <algorithm>
using namespace std;
int n,v[MAX],c[MAX],s[MAX],nr;
ifstream f("scmax.in");
ofstream g("scmax.out");
int binary_search(int x)
{
   int l=1, r=nr+1, md;
   while(l<r) {
              md=(l+r)/2;
              if(s[md]>=x) r=md; 
              else l=md+1;
   }
   if(r>nr) nr=r;
   s[r]=x;
   return r;
                  
}

void afisare(int pos,int nr)
{
     for(int i=pos ; i>=0; i--)
     if(c[i]==nr){
                  afisare(i,nr-1);
                  g<<v[i]<<" ";
                  return;
     }            
}

int main()
{
    f>>n;
    for(int i=0; i<=n; i++) f>>v[i];
    for(int i=0; i<=n; i++) c[i]=binary_search(v[i]);
    g<<nr<<endl;
    afisare(n,nr);
    return 0;
}