Cod sursa(job #1145763)

Utilizator Barcau_EmanuelBarcau Emanuel Barcau_Emanuel Data 18 martie 2014 13:43:27
Problema Garaj Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f("garaj.in");
ofstream g("garaj.out");
int n,m,a[100002],b[100002],st,ok1,ok2,dr,mid,sp,rez,i,j,k;
int d[100002];

int ver(int k)
{
    long long sp=0;
    for(i=1;i<=n;i++)
    {
        d[i]=(k/b[i])*a[i];
        sp+=d[i];
    }
    if(sp>=m) return 1;
    return 0;
}

void getrez()
{
    long long s;
    sort(d+1,d+n+1);
    s=0;
    for(i=n;i>=1;i--)
    {
        s+=d[i];
        if(s>=m) rez=n-i+1,i=0;
    }
}

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

    for(i=1;i<=n;i++)
    f>>a[i]>>b[i];

    st=1;
    dr=m+2000;

    while(st<=dr)
    {
        mid=(st+dr)/2;
        ok2=ver(mid-1);
        ok1=ver(mid);
        if(ok1==1,ok2==0)
        {
            getrez();
            g<<mid*2<<" "<<rez;
            return 0;
        }
        else if(ok1==1&&ok2==1) dr=mid-1;
        else st=mid+1;
    }


    return 0;
}