Cod sursa(job #179501)

Utilizator mike4problemsRadu Gabriel mike4problems Data 15 aprilie 2008 23:02:58
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include<fstream.h>
#define Nmax 100001

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

int a[Nmax],b[Nmax],c[Nmax],na,nb;

int poz;

void cautbin(int val)
 {
 int st=1,end=nb,mij;poz=-1;
 while(st<=end)
  {
  mij=(st+end)/2;
  if(b[mij]>=val)
   {
   poz=mij;
   end=mij-1;
   }
  else st=mij+1;
  }
 }

int main()
 {
 int i,j;
 fin>>na;
 for(i=1;i<=na;i++)
  {
  fin>>a[i];
  cautbin(a[i]);
  if(poz==-1)
   b[c[i]=++nb]=a[i];
  else
   b[c[i]=poz]=a[i];
  }
 fout<<nb<<'\n';
 for(i=na,j=nb;j>0;j--)
  {
  while(c[i]!=j) i--;
  b[j]=a[i];
  }
 for(i=1;i<=nb;i++)
  fout<<b[i]<<' ';
 fout<<'\n';
 return 0;
 }