/*
01分数规划模板(Dinkelbach)
01分数规划就是把 sum(a)/sum(b)转换成 f(x)=sum(a)-ans*sum(b);
当f(x)取到0时,ans取到了最大(小)值
poj 2976
两个长度为n的数组a,b
可以除去m个,怎样选择才能使剩下的
sum(a)/sum(b)的百分数最大
*/
int n,m;
struct Node{
int a,b;
double v; ///用于排序筛选较大的值(题目要求极大值
bool operator<(const Node&a)const{
return v<a.v;
}
}node[N];
double d[N];
double check(double ans){
for(int i=1;i<=n;++i)node[i].v=node[i].a-ans*node[i].b;
sort(node+1,node+n+1);
double c=0,_b=0;
for(int i=m+1;i<=n;++i){
c+=node[i].a;
_b+=node[i].b;
}
return c/_b; ///模拟sum(a)/sum(b)
}
int main(){
int i,j,group,temp;
while(scanf("%d%d",&n,&m)!=EOF&&(n||m)){
for(i=1;i<=n;++i)scanf("%d",&node[i].a);
for(i=1;i<=n;++i)scanf("%d",&node[i].b);
double ans,temp=0;///temp用于校验答案,初始为任意值均可
do{
ans=temp;
temp=check(ans);
}while(fabs(ans-temp)>1e-4); ///根据题目要求改精度
printf("%.0f\n",ans*100); ///原题是百分数所以*100
}
return 0;
}