题目在这里
#include <bits/stdc++.h>
using namespace std;
const int N=2e5+5;
int a[N],x=0,n=0,dp[N],maxn=0,g[N],cnt=0;
int main(){
while (cin>>a[++n]);
g[0]=100000000;
for (int i=1;i<=n;i++){if (a[i]<=g[cnt]) g[++cnt]=a[i];else {int l=1,r=cnt;while (l<r) {int mid=l+r>>1;if (g[mid]<a[i]) r=mid;else l=mid+1;}g[l]=a[i];}}
cout<<cnt<<endl;
cnt=0,g[0]=-100000000;
for (int i=1;i<=n;i++){if (a[i]>g[cnt]) g[++cnt]=a[i];else{int l=1,r=cnt;while (l<r) {int mid=l+r>>1;if (g[mid]>=a[i]) r=mid;else l=mid+1;}g[l]=a[i];}}
cout<<cnt<<endl;
return 0;
}
80分,但是下载错误样例本地测试是正确的。求大佬指点,谢谢!