http://acm.hdu.edu.cn/showproblem.php?pid=2570
也算细心题啊。

#include"iostream"
#include"algorithm"
using namespace std;
int main()
{
int i,t;
int n,v,w;
double a[110];
cin>>t;
while(t--)
{
cin>>n>>v>>w;
for(i=0;i<n;i++) cin>>a[i];
sort(a,a+n);
double p=0.0;
int k=0;
for(i=0;i<n;i++)
{
if((p*i+a[i])/(i+1)<=w) //(sum*i*v+a[i]*v)/((i+1)*v)
{
p=(p*i+a[i])/((i+1));
}
else break;
}
printf("%d %.2lf\n",i*v,p/100);
}
return 0;
}
下面这个是一开始的方法,因为少乘了个v,w了n次,悲剧!

#include"iostream"
#include"algorithm"
using namespace std;
int main()
{
int t,i,j;
int n,v,w;
int a[110];
cin>>t;
while(t--)
{
cin>>n>>v>>w;
for(i=0;i<n;i++) cin>>a[i];
sort(a,a+n);
double sum=0,s=0;
__int64 k=0;
int t=1;
for(i=0;i<n;i++)
{
s+=a[i]*v; //这儿刚开始就因为少乘了一个V,结果错了n次,而测试例子正好不影响,悲剧啊!
if(s/(v*(i+1))<=w)
{
sum=s/(v*(i+1));
k++;
}
else break;
}
printf("%I64d %.2lf\n",k*v,sum/100);
}
return 0;
}