求助!!!
查看原帖
求助!!!
844496
J_Kobe楼主2023/11/18 16:34

谁能帮我优化一下,最后三个点超时了

#include <bits/stdc++.h>
using namespace std;

int a[45005]; 

signed main()
{
	int n;
	scanf("%d", &n);
	int sum = 0, b = 1, tot = 1;
	a[1] = 1;
	while (sum + b <= 1000000000)
	{
		tot++;
		sum += b;
		a[tot] = a[tot-1] + b;
		b++;
	}
	for (int i = 1; i <= n; i++)
	{
		int x;
		scanf("%d", &x);
		int l = 1, r = tot;
		int f = 0;
		while (l < r)
		{
			int mid = (l + r) / 2;
			if (a[mid] == x)
			{
				printf("1\n");
				f = 1;
				break;
			}
			else if (a[mid] < x)
			{
				l++;
			}
			else
			{
				r--;
			}
		}
		if (f == 0)
		{
			printf("0\n");
		}
	}
	return 0;
}

2023/11/18 16:34
加载中...