150分求助
查看原帖
150分求助
476608
如虎添翼楼主2022/7/23 09:21

代码如下,拜托各位大佬帮忙

#include <bits/stdc++.h>
using namespace std;
const int maxn = 5e4 + 5; 
int a[maxn], n, len, q[maxn];
int main() {
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);
	while (cin >> a[++ n]); n --;
	q[0] = 2e9; // set q[0] to infinity
	for (int i = 1; i <= n; i ++) {
		// bisearch
		int l = 0, r = len;
		while (l < r) {
			int mid = l + r + 1 >> 1;
			if (q[mid] >= a[i]) l = mid;
			else r = mid - 1;
		}
		len = max(len, r + 1);
		q[r + 1] = a[i];
	}
	cout << len << endl; q[0] = -2e9; len = 0;
	for (int i = 1; i <= n; i ++) {
		// bisearch
		int l = 0, r = len;
		while (l < r) {
			int mid = l + r + 1 >> 1;
			if (q[mid] < a[i]) l = mid;
			else r = mid - 1;
		}
		len = max(len, r + 1);
		q[r + 1] = a[i];
	}
	cout << len;
	return 0;
}
2022/7/23 09:21
加载中...