比赛 至少完成十道练习 评测结果 AAAWAAAAAAAAA
题目名称 网线切割 最终得分 92
用户昵称 皓芷 运行时间 0.023 s
代码语言 C++ 内存使用 0.35 MiB
提交时间 2017-05-21 13:26:52
显示代码纯文本
#include<cstdio>
#include<iostream>
#include<algorithm>
const int maxn=10010;
using namespace std;
int n,k,a[maxn],ans=0,mid,you=0;
double a_0,ansa=0.00;
int main()
{
	freopen("cable.in","r",stdin);
	freopen("cable.out","w",stdout);
	scanf("%d%d",&n,&k);
	for(int i=0;i<n;i++)
	{
	  scanf("%lf",&a_0);
	  a[i]=100*a_0;
	}
	sort(a,a+n);
	int l=0,r=a[n-1];
	for(int i=n-1;i>=0;i--)
	  ans+=a[i]/r;
	if(ans<k)
	{
	  while(r-l!=1)
	  {
	    ans=0;
	    int mid=(l+r)/2;
	    for(int i=n-1;i>=0;i--)
	      ans+=a[i]/mid;
	    if(ans>=k){l=mid;ansa=mid/100.00;}
	    if(ans<k)r=mid;
	  }
	}
	else ansa=r/100.00;
	printf("%.2lf",ansa);
	return 0;
}