#include<bits/stdc++.h>
using namespace std;
int LIS(int a[], int n) {
int len ;
int b[n+1];
for (int i = 1; i <= n; i++) {
if (a[i] > b[len]) {
b[++len] = a[i];
} else {
int j = lower_bound(b+1, b+len+1, a[i]) - b;
b[j] = a[i];
}
}
return len;
}
int main(){
int a[100010];
int i=1;
int x;
while(cin>>x){
a[i++]=x;
}
reverse(a+1,a+i+1);
cout<<LIS(a,i)<<endl;
reverse(a+1,a+i+1);
cout<<LIS(a,i);
}
就是先逆序求上升的就当成下降的,然后用那个什么定理