求助80pts
查看原帖
求助80pts
578004
02Ljh楼主2022/11/5 20:05
#include <bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
#define ll long long
#define int long long
#define double long double
#define MAXN 100000
#define eps 1e-6
double a[MAXN],b[MAXN];
double tot=INF;
double p,n;
bool check(double mid)
{
    //if(tot>=mid) return true;
    double x=0;
    for(int i=1;i<=n;i++)
    {
        double xy=(a[i]*mid);
        if(xy>b[i])
        {
            x+=(xy-b[i]);
        }
    }
    if(x<=(mid*p)) return true;
    else return false;
}
void ef()
{
    double l=0,r=1e9;
    while((r-l)>eps)
    {
        //cout<<l<<" "<<r<<"\n";
        double mid=(l+r)/2;
        if(check(mid)) l=mid;
        else r=mid;
    }
    cout<<fixed<<setprecision(10)<<l;
    return ;
}
 main()
{
    ll anss=0;
    cin>>n>>p;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i]>>b[i];
        //tot=min(tot,b[i]/(double)(a[i]+0.0));
        anss+=a[i];
    }
    if(anss<=p) { cout<<"-1"; return 0; }
    //tot=tot/(n+0.0);
    //cout<<tot<<"\n";
    ef();
    return 0;
}

2022/11/5 20:05
加载中...