按a-b*x排序,不断取前k个大的计算
import java.util.Arrays;
import java.util.Scanner;
public class POJ_2976 {
static int n,k;
static int[] a=new int[1005];
static int[] b=new int[1005];
static double[] y=new double[1005];
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(true){
n=sc.nextInt();
k=sc.nextInt();
if(n==0&&k==0)break;
for (int i = 0; i < n; i++) {
a[i]=sc.nextInt();
}
for (int i = 0; i < n; i++) {
b[i]=sc.nextInt();
}
solve();
}
}
static boolean C(double x){
for (int i = 0; i < n; i++) {
y[i]=a[i]-x*b[i];
}
Arrays.sort(y,0,n);
double sum=0;
for (int i = 0; i < n-k; i++) {
sum+=y[n-i-1];
}
return sum>=0;
}
static void solve(){
double lb=0,ub=1000000005;
for (int i = 0; i < 100; i++) {
double mid=(lb+ub)/2;
if(C(mid))lb=mid;
else ub=mid;
}
System.out.println(Math.round(ub*100));
}
}