谁能帮我优化一下,最后三个点超时了
#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;
}