Cod sursa(job #3338370)

Utilizator mmateiMatei Barbu mmatei Data 2 februarie 2026 21:09:15
Problema Garaj Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
#include <algorithm>
#include <climits>

#define ll long long

using namespace std;

ifstream fin("garaj.in");
ofstream fout("garaj.out");

ll n,m,camioane[100001],timp[100001],cap[100001],nrMin,nrC,sum;

bool check(ll T){
    ll total=0;
    for(int i=1;i<=n;i++){
        ll transport = T/(2*(timp[i]));
        total+=transport*camioane[i];
        if(total>=m)return true;
    }
    return false;
}

int main()
{
    fin>>n>>m;
    for(int i=1;i<=n;i++){
        fin>>camioane[i]>>timp[i];
    }
    ll st = 1,dr= 1e15;
    while (st<dr){
        ll T = (st + dr) / 2;
        if (check(T)) {
            dr = T;
        } else {
            st = T+1;
        }
    }
    nrMin=st;

    for(int i=1;i<=n;i++){
        cap[i]=camioane[i]*(nrMin/(2*(timp[i])));
    }

    sort(cap+1,cap+n+1,greater<ll>());

    for(int i=1;i<=n;i++){
        if(sum>=m)break;
        sum+=cap[i];
        nrC++;
    }

    fout<<nrMin<<" "<<nrC;
    return 0;
}