为什么第一问答案减一才能过?悬关
查看原帖
为什么第一问答案减一才能过?悬关
1255776
Mr_user楼主2024/1/26 18:23
#include <bits/stdc++.h>
#define int long long
using namespace std;
#define endl '\n'
#define p (int)(1e9+7)
const int N=2e5+3;
int arr[N],stk[N];

signed main(){
    int n=0;
    while(cin>>arr[++n]);
    int r=0;
    stk[++r]=arr[1];
    for(int i=2;i<=n;i++){
        if(arr[i]<=stk[r]) stk[++r]=arr[i];
        else {
            int ix=upper_bound(stk+1,stk+r+1,arr[i],greater<int>())-stk;
            stk[ix]=arr[i];
        }
    }
    int ans=r-1;
    r=0;
    stk[++r]=arr[1];
    for(int i=2;i<=n;i++){
        if(arr[i]>stk[r]) stk[++r]=arr[i];
        else {
            int ix=lower_bound(stk+1,stk+r+1,arr[i])-stk;
            stk[ix]=arr[i];
        }
    }
    int res=r;
    cout<<ans<<endl<<res<<endl;
}
2024/1/26 18:23
加载中...