某工厂有n个独立的作业,由m台相同的机器进行加工处理。作业i所需的加工时间为ti,任何作业在被处理时不能中断,也不能进行拆分处理。现厂长请你给他写一个程序:算出n个作业由m台机器加工处理的最短时间。
输入
第一行T(1<T<100)表示有T组测试数据。每组测试数据的第一行分别是整数n,m(1<=n<=10000,1<=m<=100),接下来的一行是n个整数ti(1<=t<=100)。
输出
所需的最短时间
样例输入
2
2 2
1 5
6 3
2 5 13 15 16 20
样例输出
5
28
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
int speed[10010];
int mintime[101];
bool cmp( const int &x, const int &y )
{
return x > y;
}
int main()
{
int t;
cin>>t;
while(t--)
{
int m, n;
memset(speed, 0, sizeof(speed));
memset(mintime, 0, sizeof(mintime));
cin>>n>>m;
for(int i = 0; i < n; ++i)
{
cin>>speed[i];
}
sort(speed, speed + n, cmp);
for(int i = 0; i < n; ++i)
{
*min_element(mintime, mintime + m) += speed[i];
}
for(int i=0;i<n;i++)
cout<<mintime[i]<<' ';
cout<<*max_element(mintime, mintime + m)<<endl;
}
return 0;
}
mintime为22,21,28;