Cod sursa(job #1814165)

Utilizator Bodo171Bogdan Pop Bodo171 Data 23 noiembrie 2016 18:21:55
Problema Garaj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <climits>
using namespace std;
const int nmax=100005;
int cost,x,i,j,n,m,k,p,camioane;
int t[nmax],c[nmax];
bool ok;
bool check(int x)
{
    cost=0;
    for(i=1;i<=n;i++)
    {
        cost+=(x/t[i])*c[i];
    }
    //if(cost<0) cost=m;
    return (cost>=m);
}
int main()
{
    ifstream f("garaj.in");
    ofstream g("garaj.out");
    f>>n>>m;
    for(i=1;i<=n;i++)
    {
        f>>c[i]>>t[i];
        t[i]*=2;
    }
    k=INT_MAX;
    for(p=30;p>=0;p--)
    {
        if(check(k-(1<<p)))k-=(1<<p);
    }
    for(i=1;i<=n;i++)
        t[i]=(k/t[i])*c[i];
    sort(t+1,t+n+1);cost=0;
    for(i=n;i>=1&&cost<m;i--)
    {
        camioane++;
        cost+=t[i];
        //if(cost<0) cost=m;
    }
    g<<k<<' '<<camioane;
    return 0;
}