开始以为是排列组合,仔细一看不是输入k而是输出k
二分查找
#include <stdio.h>
#include <string>
#include <iostream>
#include <time.h>
#include <math.h>
#include <sys/timeb.h>
#include <set>
#include <conio.h>
#include <vector>
#include <fstream>
using namespace std;
typedef long long ll;
int main()
{
int t;
ll a[6];
scanf("%d", &t);
while (t--)
{
a[0] = 0;
for (int i = 1; i <= 5; ++i)
{
scanf("%lld", a + i);
a[0] += a[i];
}
ll l = 0, r = 555555555555555;
while (l <= r)
{
ll mid = (l + r) / 2;
if (a[1] + a[2] >= mid*5 &&a[2]+a[3]+a[4]>=mid*3&& a[4] + a[5] >= mid \
&& a[0]-a[5] >= mid *8 && a[0]-a[1] >= mid * 4 && a[0] >= mid * 9)
l = mid + 1;
else
r = mid - 1;
}
printf("%lld\n", r);
}
return 0;
}