Time Limit: 2000MS | Memory Limit: 65536K | |
Total Submissions: 23690 | Accepted: 10236 |
Description
Input
Output
Sample Input
7 1 7 3 5 9 4 8
Sample Output
4
Source
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <queue>
#define N 1222
using namespace std;
int a[N];
int n;
int bf(int &val)
{
int l=0,r=n,m;
while(l<=r)
{
m=(l+r)>>1;
if(a[m]>val) r=m-1;
else if(a[m]<val) l=m+1;
else return m;
}
return l;
}
int main()
{
int i,k,index,Max;
while(scanf("%d",&n)!=EOF)
{
memset(a,1,sizeof(a));
a[0]=-1;
for(Max=k=i=1;i<=n;i++)
{
scanf("%d",&k);
index=bf(k);
a[index]=k;
if(index>Max)
Max=index;
}
printf("%d\n",Max);
}
return 0;
}