555......鬼知道哪里无辣
查看原帖
555......鬼知道哪里无辣
799098
chengzihan620楼主2023/9/23 09:44
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <stdlib.h>
using namespace std;
int st[100001],a[100001],g[100001];
int top,n,ans;
void input(int k){
	if(st[top]>=k){
		st[++top]=k;
		return;
	}
	int l=1,r=top;
	while(l<r){
		int mid=(l+r)>>1;
		if(st[mid]<k)
			l=mid+1;
		else
			r=mid;
	}
	st[l]=k;
}
int main(){
	while(cin>>a[++n])
		input(a[n]);
	cout<<top<<endl;
	for(int i=1;i<=n;i++){
		int k=0;
		while(k<=ans&&g[k]<a[i])k++;
		if(k>ans) g[++ans]=a[i];
		else	g[k]=a[i];
	}	
	cout<<ans;
	return 0;
}
2023/9/23 09:44
加载中...