为什么我的代码只能过72分啊,我想不出来问题在哪儿啊,帮帮孩子吧
#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
#include <vector>
using namespace std;
const int N = 5 * 1e4 + 10;
int a[N], f[N], g[N];
int main()
{
int n = 0;
while(cin >> a[n]) n ++;
int len = 0;
f[0] = a[0];
for(int i = 1; i < n; i ++){
int l = 0, r = len, mid;
if(a[i] <= f[len]){
f[++ len] = a[i];
}
else{
while(l < r){
mid = (l + r) / 2;
//然后我们需要寻找序列中的第一个小于自己的位置
if (f[mid] > a[i]) l = mid + 1;
else r = mid;
}
f[l] = max(f[l], a[i]);
}
}
cout << len + 1 << endl;
int cnt = 0;
for(int i = 0; i < n; i ++){
int k = 0;
while(k < cnt && a[i] > g[k]) k ++;
g[k] = a[i];
if(k >= cnt) cnt ++;
}
cout << cnt << endl;
}