洛谷:P1020 导弹拦

#include<iostream>
#include<string>
#include<algorithm>
#define DEBUG if(  1  )
#define N 100010
using namespace std;
int z[N],z1[N],z2[N],n;
int main(){
    while(cin>>z[n++]);n--;
    int l1=1,pp,l2=1;
    z1[0]=z[0];
    z2[0]=z[0];
    for(int i=1;i<n;i++){
        if(z1[l1-1] >= z[i]){
            z1[l1++] = z[i];
        }else{
            pp=upper_bound(z1,z1+l1,z[i],greater<int>()) - z1;
            z1[pp]=z[i];
        }
        if(z2[l2-1] < z[i]){
            z2[l2++] = z[i];
        }else{
            pp=lower_bound(z2,z2+l2,z[i]) - z2;
            z2[pp]=z[i];
        }

    }
    cout<<l1<<endl<<l2;
    return 0;
}

https://www.luogu.com.cn/problem/P1020

上一篇:已知两个点求其三等分点


下一篇:五一劳动之第二题