Cod sursa(job #3138221)

Utilizator maryyMaria Ciutea maryy Data 18 iunie 2023 10:05:00
Problema Garaj Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("garaj.in");
ofstream out("garaj.out");
long long n, m;
long long tmin, v2[100001];
struct camion
{
    long long c, t;
}v[100002];
long long SticleDuse(long long t)//cate sticle se transporta intr-un timp t
{
    long long r=0;
    for(int i=1; i<=n; i++)
    {
        r+=(t/v[i].t)*v[i].c;
        if(r>=m)
            break;
    }
    return r;
}
int main()
{
    in>>n>>m;
    for(int i=1; i<=n; i++)
    {
        in>>v[i].c>>v[i].t;
        v[i].t *= 2;
    }
    long long st=0, dr=m * 1000LL, mijl, s;
    while(st<dr)
    {
        mijl=(st+dr)/2;
        s=SticleDuse(mijl);
        if(s<m)
        {
            st=mijl+1;
        }
        else
        {
            dr=mijl;
        }
    }
    tmin=st;
    out<<tmin<<" ";
    for(int i=1; i<=n; i++)
		v2[i]=tmin/v[i].t*v[i].c;
    sort(v2+1, v2+n+1);
    reverse(v2+1, v2+n+1);
    int nrmin=0;
    for(int i=1; i<=n; i++)
    {
        m-=v2[i];
        nrmin++;
        if(m<=0)
            break;
    }
    out<<nrmin;
}