Cod sursa(job #2149269)

Utilizator NicolaalexandraNicola Alexandra Mihaela Nicolaalexandra Data 2 martie 2018 14:17:46
Problema Garaj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <fstream>
#include <algorithm>
using namespace std;
long long n,m,i,st,dr,mid,s;
pair <int,int> v[100001];
int w[100001];
int verif (long long timp){
    long long s = 0;
    for (int i=1;i<=n;i++){
        s += timp/(2*v[i].second) * v[i].first;
        if (s > m)
            return 0;
    }
    return 1;
}
int main (){

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

    fin>>n>>m;
    for (i=1;i<=n;i++)
        fin>>v[i].first>>v[i].second;
          ///capacitate      timp

    /// cautam binar timpul maxim in care circula un camion
    st = 1;
    dr = 1000000000000000LL;
    while (st <= dr){
        mid = (st+dr)/2;
        if (verif (mid))
            st = mid+1;
        else
            dr = mid-1;
    }
    /// st - timpul optim
    fout<<st<<" ";
    for (i=1;i<=n;i++)
        w[i] = st/(v[i].second*2) * v[i].first;
    sort (w+1,w+n+1);
    s = 0;
    for (i=n;i>=1;i--){
        s += w[i];
        if (s >= m){
            fout<<n-i+1;
            break;
        }
    }

    return 0;
}