普通に平均最大化をする。

小数の闇を見た。

#include <cstdio>
#include <algorithm>
#include <functional>
#include <iostream>
#include <math.h>

using namespace std;

int n,k,d[1002][2];

double t[1002];

bool ch(double x){

  
  for(int i = 0;i < n;i++){
    t[i] = 100.00 * d[i][0] - x * d[i][1];
  }
  
  sort(t,t + n,greater<double>());
 double a = 0;
  
  for(int i = 0;i < n - k;i++){
    a += t[i];
  }
  
  return a >= 0;
}


int main(){
  
  while(1){
  
  scanf("%d%d",&n,&k);
  if(n == 0)break;
  for(int i = 0;i < n;i++){
    scanf("%d",&d[i][0]);
  }
  for(int i = 0;i < n;i++){
    scanf("%d",&d[i][1]);
  }
  
  double lb = -1,ub = 101;

  for(int i = 0;i < 100;i++){
    double mid = (lb + ub) / 2;
    if(ch(mid)) lb = mid;
    else ub  = mid;
  }

  printf("%d
", (int)floor(lb + 0.5));
  }
  return 0;
}