Cod sursa(job #2323578)

Utilizator OctavianVasileVasileOctavian OctavianVasile Data 19 ianuarie 2019 13:14:46
Problema Garaj Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("garaj.in");
ofstream fout ("garaj.out");
int n, m, Tmin = 1, dr = 99999999999, Nrmin;
struct Suc_De_Struguri{
    int capacitate, timp;
}v [100003];
bool cmp (Suc_De_Struguri A, Suc_De_Struguri B){
    return A.capacitate > B.capacitate;
}
int main (){
    cin >> n >> m;
    for (int i = 1; i <= n; i ++){
        cin >> v [i].capacitate >> v [i].timp;
        v [i].timp *= 2;
    }
    while (Tmin <= dr){
        int med = Tmin + (dr - Tmin) / 2, k = 1, sum = 0;
        while (k <= n && sum < m){
            sum += v [k].capacitate * (med / v [k].timp);
            k ++;
        }if (sum >= m)dr = med - 1;
        else Tmin = med + 1;
    }
    for (int i = 1; i <= n; i ++)
        v [i].capacitate = v [i].capacitate * (Tmin / v [i].timp);
    sort (v + 1, v + n + 1, cmp);
    int sum = 0;
    while (Nrmin <= n && sum < m){
        sum += v [Nrmin].capacitate;
        Nrmin ++;
    }Nrmin --;
    cout << Tmin << " " << Nrmin;
    return 0;
}