AC了,仅供参考
查看原帖
AC了,仅供参考
1188387
lzbyyds楼主2023/12/16 16:29
#include<bits/stdc++.h>
using namespace std;
int a[500005], b[5000005],len,cnt;
int main() {
	while (cin >> a[cnt++]); --cnt;
	//最长不下降
	for (int i = cnt - 1; i >= 0; --i) {
		if (a[i] >= b[len])b[++len] = a[i];
		else {
			auto j = upper_bound(b, b + len + 1, a[i]) - b;
			b[j] = a[i];
		}
	}
	cout << len << endl;
	memset(b, 0, cnt);
	len = 0;
	//最长不上升
	for (int i = 0; i < cnt; ++i) {
		if (a[i] > b[len])b[++len] = a[i];
		else {
			auto j = lower_bound(b, b + len + 1, a[i]) - b;
			b[j] = a[i];
		}
	}
	cout << len << endl;
	return 0;
}

2023/12/16 16:29
加载中...