84分求助!!!求助!!!!
查看原帖
84分求助!!!求助!!!!
1577496
ldx1012楼主2025/1/23 21:20
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 1e5 + 10;
int arr[N], brr[N], crr[N];
int n;
int binary1(int x)
{
	int l = 0, r = n + 1;
	while (l + 1 != r)
	{
		int mid = (l + r) / 2;
		if (arr[mid] < brr[x])l = mid;
		else r = mid;
	}
	if (arr[l] < brr[x])return l;
	else return -1;
}
int binary2(int x)
{
	int l = 0, r = n + 1;
	while (l + 1 != r)
	{
		int mid = (l + r) / 2;
		if (crr[mid] <= brr[x])l = mid;
		else r = mid;
	}
	if (crr[r] > brr[x])return r;
	else return -1;
}
int main(void)
{
	cin >> n;
	for (int i = 1; i <= n; i++)cin >> arr[i];
	for (int i = 1; i <= n; i++)cin >> brr[i];
	for (int i = 1; i <= n; i++)cin >> crr[i];
	sort(arr + 1, arr + n + 1);
	sort(brr + 1, brr + 1 + n);
	sort(crr + 1, crr + 1 + n);
	long long res = 0, tmp = 0;
	for (int i = 1; i <= n; i++)
	{
		int x = binary1(i);
		int y = binary2(i);
		if (x == -1 || y == -1)continue;
		else
		{
			tmp = (long long)((x) * (n - y + 1));
			res += tmp;
		}
	}
	cout << res << endl;
	return 0;
}
2025/1/23 21:20
加载中...