Cod sursa(job #1065792)

Utilizator andreiiiiPopa Andrei andreiiii Data 23 decembrie 2013 18:09:31
Problema Garaj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <algorithm>
#include <fstream>
#define PII pair<int, int>
#define x first
#define y second

using namespace std;

const int N=500005;

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

PII a[N];
int n, m;

bool verif(int t)
{
    int i, s=m;
    for(i=1;i<=n;i++)
    {
        s-=a[i].x*(t/a[i].y);
        if(s<=0) return 1;
    }
    return 0;
}

int main()
{
    int i, sol;
    fin>>n>>m;
    for(i=1;i<=n;i++)
    {
        fin>>a[i].x>>a[i].y;
        a[i].y*=2;
    }
    for(i=(1<<30), sol=(1<<30)+1;i;i>>=1)
    {
        if(sol-i>0&&verif(sol-i)) sol-=i;
    }
    for(i=1;i<=n;i++) a[i].x*=sol/a[i].y;
    sort(a+1, a+n+1);
    for(i=n;;i--)
    {
        m-=a[i].x;
        if(m<=0) break;
    }
    fout<<sol<<" "<<n-i+1;
    fin.close();
    fout.close();
}