Cod sursa(job #246002)

Utilizator mihai.cuculiciCuculici Mihail mihai.cuculici Data 19 ianuarie 2009 17:39:21
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include<fstream>
#define NMAX 100001
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");

int a[NMAX],b[NMAX],c[NMAX],d[NMAX],n,nb;
int poz,ok;

void bin_search(int key)
{
 int lo=1,hi=nb,mid;poz=-1;
 while(lo<=hi)
 {
   mid=lo+(hi-lo)/2;
   if(b[mid]>=key) poz=mid, hi=mid-1;
   else lo=mid+1;
 }
}

int main()
{
  int i;
  f>>n;
  for(i=1;i<=n;i++)
  {
    f>>a[i];
    bin_search(a[i]);
    if(poz==-1) b[++nb]=a[i], c[i]=nb;
    else b[poz]=a[i], c[i]=poz;
  }
  ok=nb;
  while(ok>0)
  {
    while(ok!=c[i]) i--;
    d[ok]=a[i];
    ok--;
  }
  g<<nb<<"\n";
  for(i=1;i<=nb;i++)
    g<<d[i]<<" ";
 return 0;
}