Cod sursa(job #1392863)

Utilizator badea_adi1999Badea Adrian Catalin badea_adi1999 Data 18 martie 2015 22:40:42
Problema Garaj Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
#include <algorithm>
#define nmax 100005
using namespace std;
ifstream f("garaj.in");
ofstream g("garaj.out");
struct camion{int c;int t;} v[nmax];
int n,m,sol;


int check(int k)
{
    int i;
    long long r=m;
    for (i=1;i<=n;i++)
        {r-=1LL*(k/2/v[i].t)*v[i].c;
         if (r<=0)
                return r;
    }
    return r;
}
bool cmp(const camion &a,const camion &b)
{
    return (a.c/a.t)>(b.c/b.t);
}
int main()
{
    int i,j,k=0;
    f>>n>>m;
    for (i=1;i<=n;i++)
        f>>v[i].c>>v[i].t;
    for (int p=1<<30;p;p=p>>=1)
        if (check(p+sol)>=0)
            sol+=p;
    sol++;
    g<<sol<<' ';
    sort(v+1,v+n+1,cmp);
    for (i=1;i<=n;i++) {
        k++;
        m-=(sol/2/v[i].t)*v[i].c;
        if (m<=0)
            break;
    }
    g<<k<<'\n';
    return 0;
}