求助第2问
查看原帖
求助第2问
803885
_8008008楼主2023/10/20 20:58
#include<iostream>
using namespace std;
const int N=10000000;
int erfen(int *a,int l,int r,int num){
	while(l<r){
		int mid=(l+r)/2;
		if(num<=a[mid])r=mid;
		else l=mid+1;
	}
	return (a[r]<num?-1:r);
}
int h[N+1],q[N+1],len=1,qlen=0;
int main(){
	while(cin>>h[len])len++;len--;
	cout<<"-1";
	for(int i=1;i<=len;i++){
		int p=erfen(q,0,qlen,h[i]);
		if(p==-1)q[++qlen]=h[i];
		else q[p]=h[i]; 
	}
	cout<<"\n"<<qlen;
	return 0;
}
2023/10/20 20:58
加载中...