前缀和+二分查找只有70分
查看原帖
前缀和+二分查找只有70分
792359
Hayaizo楼主2022/12/3 12:54
#include<iostream>
#include<cstdio>
#include<algorithm>
//#include<set>
using namespace std;
const int maxn = 2000010;
long long int arr[maxn];
int mid1;
int binary_find(int l, int r, int x)
{
	while (l < r)
	{
		mid1 = l + r >> 1;
		if (arr[mid1] > x)
		{
			r = mid1;
		}
		else if (arr[mid1] < x)
		{
			l = mid1 + 1;
		}
		else
		{
			return mid1;
		}
	}
	return l;
}

int main()
{
	long long int n;
	cin >> n;
	for (int i = 1; i <= n; i++) arr[i] = arr[i - 1] + i;
	for (int i = 1; i <= n; i++)
	{
		long long int mid = arr[i - 1] + n;
		long long int a = binary_find(1, n, mid);
		if (arr[a] - arr[i - 1] == n)
		{
			if (i != a) cout << i << " " << a << endl;
		}
	}
	return 0;
}

为什么只有70分啊

2022/12/3 12:54
加载中...