#include <iostream>
using namespace std;
int main() {
int a[50005], b[50005], c[50005] = {}, n = 0, num = 0, maxn1 = -1;
while (~scanf("%d", &a[n])) {
int maxn = 0;
for (int i = 0; i < n; i++) {
if (a[i] >= a[n]) {
maxn = b[i];
}
}
b[n] = maxn + 1;
if (maxn1 < b[n]) {
maxn1 = b[n];
}
int s = 0, e = num, ans = -1;
while (s <= e) {
int mid = (s + e) / 2;
if (c[mid] < a[n]) {
ans = mid;
e = mid - 1;
} else {
s = mid + 1;
}
}
if (ans == -1) {
num++;
c[num] = a[n];
} else {
c[ans] = a[n];
}
n++;
}
cout << maxn1 << endl << num;
return 0;
}
咋办?