#include<cstdlib>
#include<iostream>
#include<cstdio>
#include<cmath>
#include<set>
#include<cstring>
#include <algorithm>
#define N 505
#define MIN 1e-11
#define M 32010
#define MM 70000
#define LL long long
using namespace std;
int n,t,k;
int a[N],b[N];
int pan(int ans)
{
int cnt=0,sum=0;
for(int i=0; i<n; i++)
{
sum+=a[i];
if(sum>ans)
{
cnt++;
if(cnt>k)
return 0;
sum=0;
i--;
}
}
if(sum!=0)
cnt++;
if(cnt>k)
return 0;
return 1;
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("ex.in","r",stdin);
#endif
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&k);
long long sum=0;
for(int i=0; i<n; ++i)
{
scanf("%d",&a[i]);
sum+=a[i];
}
LL l=0,r=sum;
while(l<r)
{
LL mid=(l+r)>>1;
if(pan(mid))
r=mid;
else
l=mid+1;
}
sum=0;
memset(b,0,sizeof(b));
int cnt=0;
for(int i=n-1;i>=0;i--)
{
sum+=a[i];
if(sum>l)
{
b[i]=1;
cnt++;
sum=0;
i++;
}
}
if(cnt<k-1)
{
cnt=k-1-cnt;
int num=0;
for(int i=0;i<n&&num<cnt;i++)
{
if(!b[i])
{
b[i]=1;
num++;
}
}
}
printf("%d",a[0]);
if(b[0])
printf(" /");
for(int i=1; i<n; i++)
{
printf(" %d",a[i]);
if(b[i])
{
printf(" /");
}
}
printf("\n");
}
return 0;
}
714 - Copying Books--二分经典
最新推荐文章于 2022-02-03 20:14:21 发布