52pts,想知道思路究竟错哪了,还是出了细节问题?
查看原帖
52pts,想知道思路究竟错哪了,还是出了细节问题?
1061050
jiangyunuo楼主2025/7/23 10:54
#include<bits/stdc++.h>
using namespace std;
short n,a[100005],c[100005],b[100005],tot,x;
int main(){
    while(cin>>a[++n]);
    n--;
    for(int i=1;i<=n;i++){
	    c[i]=a[n-i+1];
    }
    b[++tot]=c[1];
    for(int i=2;i<=n;i++){
    	if(c[i]<b[tot]){
    		x=upper_bound(b+1,b+tot+1,c[i])-b;
    		b[x]=c[i];
    	}
    	else b[++tot]=c[i];
    }
    cout<<tot<<endl;
    memset(b,0,sizeof(b));
    tot=0;
    b[++tot]=a[1];
    for(int i=2;i<=n;i++){
    	if(a[i]<=b[tot]){
    		x=upper_bound(b+1,b+tot+1,a[i])-b;
    		b[x]=a[i];
    	}
    	else b[++tot]=a[i];
    }
    cout<<tot<<endl;
	return 0;
}
2025/7/23 10:54
加载中...