Cod sursa(job #1116475)

Utilizator Impaler_009Mihai Nitu Impaler_009 Data 22 februarie 2014 16:39:41
Problema Garaj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>
#include <algorithm>
#include <cstring>

#define ll long long

using namespace std;

ifstream fin("garaj.in");
ofstream fout("garaj.out");

int c[100001],t[100001];
int many[100001],keep[100001];
int n,m;

bool check (int val)
{
    int s = 0;
    for (int i=1; i<=n; ++i)
    {
        many[i] = val/(2*t[i])*c[i];
        s += many[i];
    }

    if (s >= m)
    {
        memcpy (keep,many,sizeof(many));
        return 1;
    }
    return 0;
}

int main()
{
    fin>>n>>m;

    for (int i=1; i<=n; ++i)
    {
        fin>>c[i]>>t[i];
    }

    int lo = 0, hi = 2000000001;

    while (hi - lo > 1)
    {
        int mid = (lo + hi)/2;

        if (check (mid))
            hi = mid;
        else lo = mid;
    }

    fout<<hi<<" ";

    sort (keep+1,keep+n+1);

    int s=0;
    int i = n;

    for (; s < m; --i)
        s += keep[i];

    fout<<n-i;
}