Cod sursa(job #2093679)

Utilizator tifui.alexandruTifui Ioan Alexandru tifui.alexandru Data 24 decembrie 2017 12:52:07
Problema Garaj Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <bits/stdc++.h>
#define Nmax 100001
#define tip pair <int,int>
#define c first
#define t second
using namespace std;
ifstream f("garaj.in");
ofstream g("garaj.out");
tip v[Nmax];
int ans;
inline bool cmp(const tip &x, const tip &y)
{
    return (x.c*(ans/x.t))>(y.c*(ans/y.t));
}
int main()
{
    int n,m,i;
    f>>n>>m;
    for(i=1;i<=n;i++)
    {
        f>>v[i].c>>v[i].t;
        v[i].t<<=1;
    }
    int lsh=1,rsh=(int)1e9,mid,sum;
    while(lsh<=rsh)
    {
        mid=(lsh+rsh)>>1;
        sum=0;
        for(i=1;i<=n;i++)
        {
            sum+=(v[i].c*(mid/v[i].t));
            if(sum>=m) i=n+12;
        }
        if(i==n+13)
        {
            ans=mid;
            rsh=mid-1;
        }
        else lsh=mid+1;
    }
    sort(v+1,v+n+1,cmp);
    for(i=1;m>0;i++)
        m-=(v[i].c*(ans/v[i].t));
    g<<ans<<' '<<i-1;

    return 0;
}