poj 3671

不降子序列。

代码:

#include<iostream>
#include<fstream>

using namespace std;

int a[30001];
int n;
int b[30001];

int find(int s,int value){
	int i=0,k;
	while(i<=s)
	{
		k=(i+s)>>1;
		if(b[k]>value) s=k-1;
		else i=k+1;
	}
	return s;
}

void read(){
//	ifstream cin("in.txt");
	int i,j,k,m,m1;
	
		cin>>n;
		for(i=0;i<n;i++)
			cin>>a[i];
		m=0;
		b[0]=a[0];
		for(i=1;i<n;i++)
		{
			j=find(m,a[i]);
			b[j+1]=a[i];
			if(j+1>m) m=j+1;
		}
		
		cout<<n-m-1<<endl;
		
}

int main(){
	read();
	return 0;
}

posted on 2011-04-30 11:03  宇宙吾心  阅读(220)  评论(0)    收藏  举报

导航