This is the 01 score planning, before listening to the left teacher has done a similar problem, the results do not know the name of this thing called 01 score planning, up posture
#include <iostream> #include <cstdio> #include <algorithm> #define EPS 0.00000001 #define N 1000050 usi
NG namespace Std;
int n,k,a[n],b[n],e[n];
Double V[n];
BOOL CMP (int p1,int p2) {return V[P1] > V[P2];} bool Jud (double x) {for (int i=1;i<=n;i++) e[i] = i;
for (int i=1;i<=n;i++) v[i] = A[i]-x*b[i];
Sort (e+1,e+n+1,cmp);
Double FZ = 0, fm = 0;
for (int i=1;i<=n-k;i++) FZ + = a[E[i]], fm + = b[E[i];
return FZ-X * FM >= 0; } int main () {for (;;)
{scanf ("%d%d", &n,&k); if (n = = 0 && k = = 0) break;
for (int i=1;i<=n;i++) scanf ("%d", &a[i]);
for (int i=1;i<=n;i++) scanf ("%d", &b[i]);
Double L = 0, r = 1000000000;
while (R-l > EPs) {double mid = (L + R)/(double) 2; if (Jud (mid)) L = mid;
else R = Mid;
} L = (double) * l;
printf ("%d\n", (int) (l+0.5));
} return 0; }