标签:
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 4578 | Accepted: 1618 |
Description
Input
Output
Sample Input
6 5 2 1 4 5 3 3 1 1 1 4 4 3 2 1
Sample Output
3 1 1
Hint
1 #include<iostream> 2 #include<algorithm> 3 #include<cstdio> 4 #include<string.h> 5 using namespace std; 6 const int inf = 10001; 7 const int MAX = 100010; 8 int binary_search(int s[],int digit,int length) 9 { 10 int left=0,right=length,mid; 11 while(right!=left) 12 { 13 mid=(left+right)/2; 14 if(digit==s[mid]) 15 return mid; 16 else if(digit<s[mid]) 17 right=mid; 18 else 19 left=mid+1; 20 } 21 return left; 22 } 23 int main() 24 { 25 int n,j; 26 while(~scanf("%d",&n)) 27 { 28 int a[MAX]; 29 int s[MAX]; 30 for(int i=1;i<=n;i++) 31 scanf("%d",&a[i]); 32 s[0]=a[0]; 33 int len=1; 34 for(int i=1;i<=n;i++) 35 { 36 s[len]=inf; 37 j=binary_search(s,a[i],len); 38 if(j==len) 39 len++; 40 s[j]=a[i]; 41 } 42 printf("%d\n",len-1); 43 } 44 return 0; 45 }
标签:
原文地址:http://www.cnblogs.com/caterpillarofharvard/p/4230264.html