二分查找求助
查看原帖
二分查找求助
1030381
AFO_Lzx楼主2024/8/24 10:13
#include<bits/stdc++.h>
#define int long long
using namespace std;

const int N = 1e5 + 5, inf = 1e18;
int t, n, a[N], b[N], len;

int get_l(int x) {
	int l = 0, r = len + 1;
	b[l] = -inf, b[r] = inf;
	
	while (l + 1 < r) {
		int mid = (l + r) >> 1;
		if (b[mid] < x) l = mid;
		else r = mid;
	}
	
	return r;
}

signed main() {
	ios::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);
	
	cin >> t;
	
	while (t--) {
		cin >> n;
		
		for (int i = 1; i <= n; i++) {
			cin >> a[i];
		}
		
		len = 1;
		b[len] = a[1];
		for (int i = 2; i <= n; i++) {
			if (a[i] != a[i - 1]) b[++len] = a[i]; 
		}
		
		sort(b + 1, b + len + 1);
		for (int i = 1; i <= n; i++) {
			cout << get_l(a[i]) << " ";
		}
		
		cout << "\n";
	}
	return 0;
}

样例能A,但是交上去0pts

2024/8/24 10:13
加载中...