Pagini recente » Cod sursa (job #696729) | Cod sursa (job #2529673) | Cod sursa (job #2291075) | Cod sursa (job #1966307) | Cod sursa (job #863502)
Cod sursa(job #863502)
#include <iostream>
#include <stdio.h>
using namespace std;
FILE *f=fopen("scmax.in","r");
FILE *g=fopen("scmax.out","w");
int mxx,nr,i,n,a[100000],c[100000],mx,k,j,s[100000];
/*void drum(int k)
{
i++;
fprintf(g,"%d ",a[k]);
if(i<mxx) drum(t[k]);
}
*/
int cauta(int nr)
{
int p,m,u,mx;
mx=0;
p=1;
u=c[0];
while (p<=u)
{
m=(p+u)/2;
if(c[m]<nr)
{
if(m>mx)mx=m;
p=m+1;
} else u=m-1;
}
return mx;
}
int main()
{
mxx=0;
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
fscanf(f,"%d",&a[i]);
c[0]=1;
c[1]=a[1];
//a[1]=1;
for (i=2;i<=n;i++)
{
nr=cauta(a[i]);
if(nr==c[0])
{
c[0]++;
c[nr+1]=a[i];
} else c[nr+1]=a[i];
s[i]=nr+1;
if (s[i]>mxx) mxx=s[i];
}
fprintf(g,"%d\n",mxx);
i=0;
//drum(k);
fclose(g);
return 0;
}