Cod sursa(job #3139043)

Utilizator BurloiEmilAndreiBurloi Emil Andrei BurloiEmilAndrei Data 24 iunie 2023 14:29:55
Problema Garaj Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <fstream>
#include <algorithm>
using namespace std;

ifstream cin("garaj.in");
ofstream cout("garaj.out");

const int MAXN = 1e5;

pair<int, int> camion[MAXN];

int check(int mij, int n){
    int obj = 0, i;
    for(i = 0; i < n; i++){
        obj += mij / camion[i].second * camion[i].first;
    }
    return obj;
}

int main() {
    int n, m, i, maxTimp, st, dr, mij, obj;

    cin >> n >> m;
    maxTimp = 0;
    for(i = 0; i < n; i++){
        cin >> camion[i].first >> camion[i].second;
        maxTimp = max(maxTimp, m / camion[i].first * (camion[i].second = camion[i].second * 2));
    }
    // Cautare Binara
    st = 1, dr = maxTimp;
    while(st <= dr){
        mij = (st + dr) / 2;
        if(check(mij, n) < m){
            st = mij + 1;
        }else{
            dr = mij - 1;
        }
    }
    cout << st << " ";
    sort(camion, camion + n, [&](pair<int, int> a, pair<int, int>b){
        return (st / a.second * a.first) > (st / b.second * b.first);
    });
    i = obj = 0;
    while(i < n && obj < m){
        obj += st / camion[i].second * camion[i].first;
        ++i;
    }
    cout << i;
    return 0;
}