求调
查看原帖
求调
1243587
shiyilang0910楼主2025/1/1 17:51
#include<bits/stdc++.h>
using namespace std;
int n,a[100005],dp[100005],pd[100005],maxn=0,p;
int main(){
	while(cin>>p){
		a[++n]=p;
	}
	pd[1]=a[1];
	int len=1;
	for(int i=2;i<=p;i++){
		if (a[i]<pd[len]){
			len++;
			pd[len]=a[i];
		}else{
			int *p1=lower_bound(pd+1,pd+len+1,a[i]); 
			int left=p1-pd;
			pd[left]=a[i];
		}
	}
	cout<<len<<endl;
	dp[1]=a[1];
	len=1;
	for(int i=2;i<=p;i++){
		if (a[i]>dp[len]){
			len++;
			dp[len]=a[i];
		}else{
			int *p1=lower_bound(dp+1,dp+len+1,a[i]);
			int left=p1-dp;
			dp[left]=a[i];
		}
	}
	cout<<len;
	return 0;
}
2025/1/1 17:51
加载中...