Cod sursa(job #279411)

Utilizator BooZZySandu Bogdan BooZZy Data 12 martie 2009 20:14:59
Problema Subsir crescator maximal Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include<fstream.h>
#include<iostream.h>
int p,maxim,n,i,st,dr,m,v[100010],s[100010],l[100010],poz,k;
int main()
{
ifstream f("scmax.in");
ofstream g("scmax.out");
f>>n;
for(i=1;i<=n;i++) f>>v[i];
for(i=1;i<=n;i++)
 { st=1; dr=k; poz=0;

    while(st<=dr)
     { m=(st+dr)/2;
      if(s[m]>=v[i]) { dr=m-1; poz=m;}
       else st=m+1;
     }
   if(poz) { s[poz]=v[i]; l[i]=poz;}
    else {s[++k]=v[i]; l[i]=k;}
  if(l[i]>maxim) { maxim=l[i]; p=i;}
  }
g<<maxim<<'\n';
//k=0;
//while(maxim)
// { if(l[p]==maxim)
//       { s[++k]=v[p]; maxim--;}
//   p--;
// }
for(i=1;i<=maxim;i++)
g<<s[i]<<" ";
return 0;
}