这是我的代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n , a[100010] , b[100010] , len;
signed main () {
while (cin >> a[++ n]) ; n --;
for (int i = 1;i <= n;i ++) {
cin >> a[i];
}
b[1] = a[1]; len = 1;
for (int i = 1;i <= n;i ++) {
if (b[len] >= a[i]) b[++ len] = a[i];
else {
int l = 1 , r = len , mid;
while (l < r) {
mid = (l + r) / 2;
if (b[mid] < a[i]) r = mid;
else l = mid + 1;
}
b[r] = a[i];
}
}
cout << len << endl;
memset (b , 0 , sizeof (b) );
b[1] = a[1]; len = 1;
for (int i = 1;i <= n;i ++) {
if (a[i] > b[len]) b[++ len] = a[i];
else {
int l = 1 , r = len , mid;
while (l < r) {
mid = (l + r) / 2;
if (b[mid] >= a[i]) r = mid;
else l = mid + 1;
}
b[r] = a[i];
}
}
cout << len;
return 0;
}
但是我发现错的点都大了1
直接减一就只对四个点
为啥呢??