POJ 2976 Dropping tests [01分数规划]

裸题

$fuck$ $printf("0.lf",ans)$挂掉不加$l$就$AC$是什么鬼


#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int N=1005;
const double eps=1e-4;
inline int read(){
    char c=getchar();int x=0,f=1;
    while(c<'0'||c>'9'){if(c=='-')f=-1; c=getchar();}
    while(c>='0'&&c<='9'){x=x*10+c-'0'; c=getchar();}
    return x*f;
}
int n,k;
double a[N],b[N],c[N];
bool check(double mid){
    for(int i=1;i<=n;i++) c[i]=100*a[i]-mid*b[i];
    sort(c+1,c+1+n);
    double sum=0;
    for(int i=1;i<=k;i++) sum+=c[n-i+1];
    return sum>0;
}
void solve(){
    double l=0.0,r=100.0;
    while(r-l>eps){
        double mid=(l+r)/2.0;
        if(check(mid)) l=mid;
        else r=mid;
    }
    printf("%.0f
",l);
}
int main(){
    freopen("in","r",stdin);
    while(scanf("%d%d",&n,&k)!=EOF){
        if(n==0&&k==0) break;
        k=n-k;
        for(int i=1;i<=n;i++) scanf("%lf",&a[i]);
        for(int i=1;i<=n;i++) scanf("%lf",&b[i]);
        solve();
    }
}