Cod sursa(job #186736)

Utilizator zbarniZajzon Barna zbarni Data 28 aprilie 2008 18:54:33
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include<fstream.h>
#define g 100003
int poz,a[g],c[g],b[g],d[g],n,s;

void binsearch (int value)
 {
  poz=-1;
  int middle,left=1,end=s;
  while (left<=end)
   {
    middle=(left+end)/2;
    if (b[middle]>=value)
      {
       end=middle-1;
       poz=middle;
      }
    else
       left=middle+1;
   }
 }

int main()
 {
  ifstream be ("scmax.in");
  ofstream ki ("scmax.out");
  int n,i,j;
  be>>n;
  for (i=1;i<=n;i++)
     {
      be>>a[i];
      binsearch (a[i]);
      if (poz==-1)
	{
	 b[++s]=a[i];
	 c[i]=s;
	}
      else
	{
	 b[poz]=a[i];
	 c[i]=poz;
	}
     }
  be.close();
  int ok;
  ok=s;
  ki<<s<<'\n';
  while (ok)
   {
    while (ok!=c[i])
      i++;
    d[ok]=a[i];
    ok--;
   }
  for (i=1;i<=s;i++)
     ki<<d[i]<<" ";
  ki<<'\n';
 ki.close();
  return 0;
 }