Cod sursa(job #1690723)

Utilizator Alexa2001Alexa Tudose Alexa2001 Data 15 aprilie 2016 16:14:58
Problema Garaj Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <cstdio>
#include <algorithm>

using namespace std;

const int NM=(1e5)+5;

long long st,dr,mij;
int a[NM], b[NM],i,n,m,suc[NM];

bool stiee(long long time)
{
    int i;
    long long suc=0;

    for(i=1; i<=n; ++i)
    {
        suc += a[i]*(time/b[i]);
        if(suc>=1LL*m) return 1;
    }
    return 0;
}

int main()
{
    freopen("garaj.in", "r", stdin);
    freopen("garaj.out", "w", stdout);

    scanf("%d%d", &n, &m);

    for(i=1; i<=n; ++i) scanf("%d%d", &a[i], &b[i]);

    st=0;dr=1000LL*m;

    while(st<=dr)
    {
        mij=((st+dr)>>1LL);
        if(stiee(mij)) dr=mij-1;
        else st=mij+1;
    }

    printf("%lld ", 2*st);

    for(i=1; i<=n; ++i)
        suc[i]=(int)(a[i]*(st/b[i]));

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

    for(i=n; i; --i)
    if(m>0) m-=suc[i];
    else break;

    printf("%d\n", n-i);

    return 0;
}