33,010
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
void sort(int *a,int n)
{
int i,j,k;
for (i=0;i<n ;i++ )
{
int min=i;
for (j=i+1; j<n; j++)
{
if (a[j]<a[min]) min=j;
}
if (i!=min)
{
k=a[i];
a[i]=a[min];
a[min]=k;
}
}
}
int main()
{
int t;
int num[50];
int dif[50];
scanf("%d", &t);
while (t--)
{
int n,k,r;
int i,j;
scanf("%d %d", &n,&k);
i=0;
while (i<n)
{
scanf("%d", &num[i]);
i++;
}
sort(num,n);
if (n>1) dif[n-1]=num[n-1]-num[n-2];
for (i=n-2;i>0 ; i--)
{
dif[i]=(num[i]-num[i-1])*(n-i)+dif[i+1];
}
r=num[n-1]-num[0];
for (i=0;i<n && k>=0; i++)
{
int tmp;
j=n-1;
while (dif[j]<k && j>0) j--;
if (j>i)
{
tmp=num[j-1]+(dif[j]-k)/(n-1-j+1)-num[i];
if ((dif[j]-k) % (n-1-j+1)>0) tmp++;
}
else tmp=0;
if (tmp<0) tmp=0;
if (tmp<r) r=tmp;
k-=num[i];
}
printf("%d\n",r);
}
return 0;
}