Cod sursa(job #661085)

Utilizator suzanicaSuzanica Mihu suzanica Data 13 ianuarie 2012 19:13:47
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<fstream>
using namespace std;
ofstream g("scmax.out");
const int nmax=100001;
int a[nmax],p[nmax],q[nmax],n,i,j,k;
int caut(int ls,int ld,int x)
{
	int mij;
    while(ls<=ld)
	{
          mij=(ls+ld)/2;
          if (q[mij]>=x&&q[mij-1]<x) 
			  return mij;
          if(q[mij]<x) 
			  ls=mij+1;
                   else 
					   ld=mij-1;
	}
    return ++k;
}
void scriu(int i,int k)
{
     if (k>0)
	 {
       if (p[i]==k) 
	   {
		  scriu(i-1,k-1);
           g<<a[i]<<" ";
	   }
             else 
				 scriu(i-1,k);
      }
} 
int main()
{
	ifstream f("scmax.in");
	f>>n;
	for(i=1;i<=n;i++)
		f>>a[i];
	    for(i=1;i<=n;i++)
		{
			j=caut(1,k,a[i]);
                        q[j]=a[i];
                        p[i]=j;
	    }
     g<<k;
	 g<<"\n";
    scriu(n,k);
    return 0;
}