33,010
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
using namespace std;
int card[55];
int test(int l, int r)
{
if (l == r)
{
return l;
}
int k = (l + r) / 2;
if (l + 1 == r)
{
k++;
}
int m = 0;
for (int i = 1; i < 55; i++)
{
if (card[i] < k)
{
m = m + (k - card[i]);
}
}
if (m <= k && m <= card[0])
{
return test(k, r);
}
else
{
return test(l, k - 1);
}
}
int main()
{
int max;
while (cin >> card[0])
{
max = card[0];
for (int i = 1; i < 55; i++)
{
cin >> card[i];
if (max < card[i])
{
max = card[i];
}
}
cout << test(0, 2*max) << endl;
}
system("pause");
return 0;
}