Cod sursa(job #185723)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 25 aprilie 2008 22:27:18
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<fstream>
#define Nmax 100001
using namespace std;

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;
 }