求助(全wa)
查看原帖
求助(全wa)
1286755
tangfengting楼主2024/12/27 16:58
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
int a[N];
vector<int> v;
int main() {
	int n = 0;
	int t;
	while (cin >> t) 
		a[++ n] = t;	
	for (int i = 1; i <= n; i ++) {
		if (v.empty() || v.back() > a[i])
			v.push_back(a[i]);
		else {
			int l = 1, r = v.size();
			while (l < r) {
				int mid = l + r >> 1;
				if (a[mid] > a[i])
					l = mid + 1;
				else
					r = mid;
			}
			v[l] = a[i];
		}
	}
	cout << v.size() << endl;
	v.clear();
	for (int i = 1; i <= n; i ++) {
		if (!v.size() || v.back() < a[i])
            v.push_back(a[i]);
        else {
            int position = upper_bound(v.begin(), v.end(), a[i]) - v.begin();
            v[position] = a[i];
        }
	}
	cout << v.size();
	return 0;
}
2024/12/27 16:58
加载中...