比赛 至少完成十道练习 评测结果 AAAAAAAAAAAAA
题目名称 网线切割 最终得分 100
用户昵称 Hyoi_iostream 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2017-05-23 19:16:19
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
const int MAXN=10000+10;
int n,k,len[MAXN],sum,high,low,mid;
inline void init(){
	 cin>>n>>k;
	 for(int i=1;i<=n;i++){
	 	double t;
	 	scanf("%lf",&t);
	 	len[i]=(float)(t*100.0);
	 	sum+=len[i];
}
	 	sort(len+1,len+n+1);
	 	high=len[n]+1;low=0;
}
inline bool check(int x){
	int o=0;
	for(int i=1;i<=n;i++)
		o+=len[i]/x;
		if(o>=k) return true;
		else return false;
}
inline void work(){
	while(low+1<high){
	mid=(high+low)/2;
	if(check(mid)) low=mid;
	else high=mid;
}
}
inline int Main(){
	freopen("cable.in","r",stdin);
	freopen("cable.out","w",stdout);
	init();
	work();
	printf("%.2lf",low/100.0);
	fclose(stdin);
	fclose(stdout);
	return 0;
}
int work1=Main();
int main(){;}