eee
查看原帖
eee
1074920
wkt2012楼主2024/8/28 12:12
#include<bits/stdc++.h>
using namespace std;
int t,n,a[1000005],s[1000005],f,cnt=0,ans=0;
int main() {
	while(cin>>t){
		a[++n]=t;
	} 
	memset(s,0x3f,sizeof s);
	reverse(a+1,a+n+1);
	for(int i=1;i<=n;i++){
		int l=1,r=i;
		while(l<r){
			int mid=(l+r)>>1;
			if(s[mid]>a[i]) r=mid;
			else l=mid+1;
		}
		s[l]=min(s[l],a[i]);
		ans=max(ans,l);
	}
	cout<<ans<<endl;
	s[++cnt]=a[1];
	for(int i=2;i<=n;i++){
		int  k=0,ans=1e9;
		for(int j=1;j<=cnt;j++){
			if(s[j]>=a[i]&&ans>s[j]){
				ans=s[j];
				k=j;
			}
			
		}
		if(k){
				s[k]=a[i];
			}else{
				s[++cnt]=a[i];
			}
	}
	cout<<cnt;
	return 0;
}
2024/8/28 12:12
加载中...