#include <iostream>
#include <string.h>
#define inf 0x7fffffff
using namespace std;
int n, a[100005], dp[100005], len;
int main() {
do {
cin >> a[++n];
} while (getchar() == ' ');
//question 1
dp[0] = inf;
for (int i = 1; i <= n; i++) {
if (dp[len] >= a[i]) {
dp[++len] = a[i];
continue;
}
int l = 1, r = len, index = 0;
while (l <= r) {
int mid = (l + r) / 2;
if (dp[mid] < a[i]) {
index = mid;
r = mid - 1;
} else {
l = mid + 1;
}
}
dp[index] = a[i];
}
cout << len << '\n';
//question 2
memset(dp, 0, sizeof(dp));
len = 0;
dp[0] = -1;
for (int i = 1; i <= n; i++) {
if (dp[len] < a[i]) {
dp[++len] = a[i];
continue;
}
int l = 1, r = len, index = 0;
while (l <= r) {
int mid = (l + r) / 2;
if (dp[mid] >= a[i]) {
index = mid;
r = mid - 1;
} else {
l = mid + 1;
}
}
dp[index] = a[i];
}
cout << len;
return 0;
}
提交记录
最后一个点 WA 了,请问代码哪里有问题?