Cod sursa(job #1538118)

Utilizator ris99Istrate Ruxandra ris99 Data 28 noiembrie 2015 15:43:45
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.53 kb
#include <fstream>

using namespace std;
long n, a[100003], k, b[100003], m,poz[100003];
ifstream f("scmax.in");
ofstream g("scmax.out");
long caut(long p,long u,long x)
{long m;
while(p<=u)
{m=(p+u)/2;
 if(x<a[b[m]]) p=m+1;
 else u=m-1;

}
  return p;
}
int main()
{ int i;
  f>>n;
  for(i=1;i<=n;i++)
  f>>a[i];
  for(i=n;i>=1;i--)
  {k=caut(1,m,a[i]);
   poz[i]=b[k-1];
   if(k>m){b[k]=i;m=k;}
   else if(a[i]>a[b[k]]) b[k]=i;

  }
  g<<m<<endl;
  for(i=b[m];i>0;i=poz[i]) g<<a[i]<<' ';
   return 0;

}