Cod sursa(job #1379134)

Utilizator AlxzAlex Cremeneanu Alxz Data 6 martie 2015 16:30:17
Problema Garaj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("garaj.in");
ofstream fout("garaj.out");
int sol,st,dr,i,n,m,a[100001][2],mij,viz[100001],k;

int check(int mij)
{
    long long sol=0;
    for(i=1;i<=n;i++)
    {
        sol+=1ll*a[i][0]*(mij/a[i][1]);
        if(sol>=1ll*m)
            return 1;
    }
    return 0;
}
int main()
{
    fin>>n>>m;
    for(i=1;i<=n;i++)
    {
        fin>>a[i][0]>>a[i][1];
        a[i][1]=a[i][1]*2;
    }
    st=1;
    dr=2000000000;
    while(st<=dr)
    {

        mij=(st+dr)/2;
        if(check(mij))
        {
            dr=mij-1;
            sol=mij;
        }
        else
            st=mij+1;
    }
    fout<<sol;
    for(i=1;i<=n;i++)
        viz[i]=a[i][0]*(sol/a[i][1]);
    sort(viz+1,viz+n+1);
    sol=0;
    for(i=n;i>=1;i--)
    {
        k+=viz[i];
        sol++;
        if(k>=m)
            break;

    }
    fout<<" "<<sol;
    return 0;
}