悬关,最后一个点错了
查看原帖
悬关,最后一个点错了
592442
Crism_qwq楼主2023/7/17 19:18

subtask#1错了,帮我看看

我给个错误样例:

输入181 205 471 782 1033 1058 1111

实际输出7 3

答案输出 7 4

#include<bits/stdc++.h>
using namespace std;
int a[100005],dp[100005],dq[100005],maxx=1;
bool check(int y,int x){
    if(a[y]>dp[x]) return true;
    else return false;
}
bool chack(int y,int x){
    if(a[y]<=dp[x]) return true;
    else return false;
}
int main() {
    int k=1;
    while(cin>>a[k]){
        k++;
    }
    k-=1;
    dp[1]=a[1];
    for(int i=1;i<=k;i++){
        int l=1,r=i,flag=0;
        while(l<r){
            int mid=(l+r)/2;
            if(check(i,mid)){
                flag=1;
                r=mid;
            }else{
                l=mid+1;
            }
        }
        if(flag==1){
            dp[r]=a[i];
            maxx=max(r,maxx);
        }
    }
    cout<<maxx<<endl;
    maxx=1;
    dp[1]=a[1];
    for(int i=1;i<=k;i++){
        dp[i]=50005;
        int l=1,r=i,flag=0;
        while(l<r){
            int mid=(l+r)/2;
            if(chack(i,mid)){
                flag=1;
                r=mid;
            }else{
                l=mid+1;
            }
        }
        if(flag==1){
            dp[r]=a[i];
            maxx=max(r,maxx);
        }
    }
    cout<<maxx;
    return 0;
}
2023/7/17 19:18
加载中...