# POJ1064二分

n根线，现在要把这n根线切割成k根等长（设长为len）的线，问能切得的最长的len为多少，

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.math.BigInteger;
import java.util.StringTokenizer;

public class Main {
public static void main(String[] args){
new POJ1064().solve()  ;
}
}

class POJ1064{

InputReader in = new InputReader(System.in) ;
PrintWriter out = new PrintWriter(System.out) ;
final int N = 10008 ;
double[] x = new double[N] ;
int n , k ;
boolean judge(double l){
int cnt = 0 ;
for(int i = 0 ; i < n ; i++){
cnt += (int)(x[i] / l) ;
}
return cnt >= k ;
}

void solve(){
n = in.nextInt() ;
k = in.nextInt() ;
double left = 0.0 , right = 0.0 , mid , res = -1 ;
for(int i = 0 ; i < n ; i++){
x[i] = in.nextDouble() ;
right = Math.max(right , x[i]) ;
}
for(int i = 0 ; i < 100 ; i++){
mid = (left + right) / 2 ;
if(judge(mid)) res = left = mid ;
else right = mid ;

}
out.printf("%.2f" , Math.floor(res*100)/100) ;
out.println();
out.flush() ;
}
}

class InputReader {
public BufferedReader reader;
public StringTokenizer tokenizer;

public InputReader(InputStream stream) {
reader = new BufferedReader(new InputStreamReader(stream), 32768);
tokenizer = new StringTokenizer("");
}

private void eat(String s) {
tokenizer = new StringTokenizer(s);
}

public String nextLine() {
try {
return reader.readLine();
} catch (Exception e) {
return null;
}
}

public boolean hasNext() {
while (!tokenizer.hasMoreTokens()) {
String s = nextLine();
if (s == null)
return false;
eat(s);
}
return true;
}

public String next() {
hasNext();
return tokenizer.nextToken();
}

public int nextInt() {
return Integer.parseInt(next());
}

public long nextLong() {
return Long.parseLong(next());
}

public double nextDouble() {
return Double.parseDouble(next());
}

public BigInteger nextBigInteger() {
return new BigInteger(next());
}

}



• 本文已收录于以下专栏：

举报原因： 您举报文章：POJ1064二分 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)