Cod sursa(job #1399508)

Utilizator addy01adrian dumitrache addy01 Data 24 martie 2015 19:44:09
Problema Garaj Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
# include <fstream>
# include <iostream>
# include <algorithm>

using namespace std;

const int maxn = 100003;
const int smax = 2000000000;

struct camion
{
    int c,t,s;
} v[maxn];

int N,M,sum,T=1<<20,sol,i;

inline bool mycomp(camion a,camion b)
{
    return a.s>b.s;
}


int main()
{
    ifstream in ("garaj.in");
    ofstream out ("garaj.out");
    in>>N>>M;
    for(i=1; i<=N; ++i)
    {
        in>>v[i].c>>v[i].t;
        v[i].t*=2;
    }

    int st=1,dr=smax,mid;
    for(; st<=dr;)
    {
        mid=(st+dr)/2;
        sum=0;
        for(int i=1; i<=N && sum<M ; i++)
            sum+=mid/v[i].t*v[i].c;

        if (sum>=M)
        {
            dr = mid-1;
            if(T>mid)
                T=mid;
        }
        else
            st=mid+1;
    }

    for(i=1; i<=N; ++i)
        v[i].s=(T/v[i].t)*v[i].c;

    sort(v+1,v+N+1,mycomp);


    sum=0;
    for(sol=1; sol<=N && sum<M ; sol++)
    {
        sum+=v[sol].s;
    }
    sol--;
    out<<T<<" "<<sol;

    return 0;
}