小 A 不想成为不被需要的人,所以她决定要努力练习吉他。但是她现在被一个作业题卡着了,为了珍惜练习时间,她现在向你求助。
小 A 不想成为不被需要的人,所以她决定要努力练习吉他。但是她现在被一个作业题卡着了,为了珍惜练习时间,她现在向你求助。
每个测试文件均包含多组测试数据。第一行输入一个整数
代表数据组数,每组测试数据描述如下:
在一行上输入一个正整数
代表规定的数组和。
对于每一组测试数据,在单独的一行上输出一个整数,表示最大的
。
3 1 5 12
2 3 4
对于第一组数据,其唯一可能的构造是选取
且
,这样
,因此
。
对于第二组数据,其中一种可能的构造是选取
且
,这样
,因此
。可以证明这是更优的。
#include <iostream>
bool check(long long x,long long m)
{
if(x <= 1)
{
return true;
}
long long cost = ((x-1) * x * (x+1)) / 6;
return cost <= m;
}
int main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int t = 0;
std::cin>>t;
while(t--)
{
long long m = 0LL;
std::cin>>m;
long long left = 1LL, right = 2000000LL;
long long ans = 0LL;
while(left <= right)
{
int mid = left + ((right - left) >> 1);
if(check(mid,m))
{
ans = mid;
left = mid + 1;
}
else
{
right = mid -1;
}
}
std::cout<<ans<<'\n';
}
}