Cod sursa(job #1690732)

Utilizator Alexa2001Alexa Tudose Alexa2001 Data 15 aprilie 2016 16:21:32
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];

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

    for(i=1; i<=n; ++i)
    {
        suc += a[i]*(timp/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;
}