182求救
查看原帖
182求救
1241185
yi105011楼主2024/8/20 08:32

这是我的代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n , a[100010] , b[100010] , len;
signed main () {
	while (cin >> a[++ n]) ; n --;
	for (int i = 1;i <= n;i ++) {
		cin >> a[i];
	}
	b[1] = a[1]; len = 1;
	for (int i = 1;i <= n;i ++) {
		if (b[len] >= a[i]) b[++ len] = a[i];
		else {
			int l = 1 , r = len , mid;
			while (l < r) {
				mid = (l + r) / 2;
				if (b[mid] < a[i]) r = mid;
				else l = mid + 1;
			}
			b[r] = a[i];
		}
	}
	cout << len << endl;
	memset (b , 0 , sizeof (b) );
	b[1] = a[1]; len = 1;
	for (int i = 1;i <= n;i ++) {
		if (a[i] > b[len]) b[++ len] = a[i];
		else {
			int l = 1 , r = len , mid;
			while (l < r) {
				mid = (l + r) / 2;
				if (b[mid] >= a[i]) r = mid;
				else l = mid + 1;
			}
			b[r] = a[i];
		}
	}
	cout << len;
	return 0;
}

错了四个点

但是我发现错的点都大了1
直接减一就只对四个点

为啥呢??

2024/8/20 08:32
加载中...