Cod sursa(job #3254112)

Utilizator Darius1414Dobre Darius Adrian Darius1414 Data 6 noiembrie 2024 09:30:38
Problema Garaj Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>
#include <algorithm>
#define nmx 100005
using namespace std;
long long n,m,a,b,c[nmx],t[nmx],p[nmx],r,rsp;
bool tryit(long long x)
{
    rsp=0;
    for (int i=1;i<=n;i++)
        rsp+=x/t[i]*c[i];
    return rsp>=m;
}
int main()
{
    ifstream f ("garaj.in");
    ofstream g ("garaj.out");
    f>>n>>m;
    for (int i=1;i<=n;i++)
    {
        f>>c[i]>>t[i];
        t[i]*=2;
    }
    long long st=1,dr=1000000000000000,mid,sol;
    while (st<=dr)
    {
        mid=(st+dr)/2;
        if (tryit(mid))
        {
            sol=mid;
            r=rsp;
            dr=mid-1;
        }
        else st=mid+1;
    }
    g<<sol<<'\n';
    for (int i=1;i<=n;i++)
        p[i]=sol/t[i]*c[i];
    sort (p+1,p+n+1);
    int cam=n;
    for (int i=1;i<=n;i++)
    {
        if (r-p[i]>=m)
        {
            r-=p[i];
            cam--;
        }
        else break;
    }
    g<<cam;
}