Cod sursa(job #3138010)

Utilizator maryyMaria Ciutea maryy Data 16 iunie 2023 22:21:35
Problema Garaj Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("garaj.in");
ofstream out("garaj.out");
int n, m;
int tmin;
struct camion
{
    int c, t;
}v[100002];
int SticleDuse(int t)//cate sticle se transporta intr-un timp t
{
    int r=0;
    for(int i=1; i<=n; i++)
    {
        r+=(t/v[i].t)/2*v[i].c;
        if(r>=m)
            break;
    }
    return r;
}
bool cmp(camion a, camion b)
{
    if((tmin/a.t)/2*a.c<(tmin/b.t)/2*b.c)
    {
        return 0;
    }
    return 1;
}
int main()
{
    in>>n>>m;
    for(int i=1; i<=n; i++)
    {
        in>>v[i].c>>v[i].t;
    }
    long long st=0, dr=v[1].t*m, 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<<" ";
    sort(v+1, v+n+1, cmp);
    int nrmin=0;
    for(int i=1; i<=n; i++)
    {
        m-=(tmin/v[i].t)/2*v[i].c;
        nrmin++;
        if(m<=0)
            break;
    }
    out<<nrmin;
}