Cod sursa(job #922478)

Utilizator vladvaldezVlad Dimulescu vladvaldez Data 22 martie 2013 10:41:07
Problema Subsir crescator maximal Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <stdio.h>

using namespace std;
FILE *f=fopen("scmax.in","r");
FILE *g=fopen("scmax.out","w");

long long b[100004],v[100004],n,i,poz;

int caut(long long x)
{
  int p=1,u=b[0],nr=0,m;

  while(p<=u)
  {
    m=(p+u)/2;
    if (b[m]<x)
     {
        if (m>nr)nr=m;
       p=m+1;
     }
   else u=m-1;
  }
return nr;
}


int main()
{


fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
fscanf(f,"%d",&v[i]);

b[0]=1;
b[1]=v[1];
for(i=2;i<=n;i++)
{
  poz=caut(v[i]);
  if (poz==b[0])
  {
    b[0]++;
    b[poz+1]=v[i];
  }
 else b[poz+1]=v[i];

}
fprintf(g,"%d\n",b[0]);
for(i=1;i<=b[0];i++)
fprintf(g,"%d ",b[i]);

fclose(g);
return 0;
}