比赛 至少完成十道练习 评测结果 AAAAAAAAAAAWW
题目名称 网线切割 最终得分 84
用户昵称 玉带林中挂 运行时间 0.085 s
代码语言 C++ 内存使用 1.08 MiB
提交时间 2017-05-23 18:21:09
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>

using namespace std;

int n,k;
double a[100001],sum=0;

bool solve(double m)
{
	int have=0;
	for(int i=1;i<=n;i++)
	{
		if(a[i]>m)
		{
			double tot=a[i];
			while(tot>m)
			{
				tot-=m;
				have++;
			}
		}
	}
	return have>=k;
}


int main()
{
	freopen("cable.in","r",stdin);
	freopen("cable.out","w",stdout);
	cin>>n>>k;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		a[i]=a[i]*100;
		sum+=a[i];
	}
	double r=sum/k;
	double l=1;
	double m;
	while(r-l>0.0001)
	{
		m=(r+l)/2;
		if(solve(m))
		 	l=m;
		else
			r=m;
	}
	if(r<1)
	{
		cout<<"0.00";
		return 0;
	}
	else printf("%.2lf",l/100);
	return 0;
}