Cod sursa(job #3261248)

Utilizator 0021592Grecu rares 0021592 Data 4 decembrie 2024 22:08:34
Problema Garaj Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>
#include <algorithm>
#define int long long
using namespace std;
ifstream in("garaj.in");
ofstream out("garaj.out");
int n, m, i, j, st, dr, c[100010], t[100010], g[100010], f, best, sum;
bool checkss(int ts)
{
    sum = 0;
    for (i = 1; i <= n; i++)
        sum += c[i] * (ts / (t[i]*2));
    return sum >= m;
}
int32_t main()
{
    in >> n >> m;
    for (i = 1; i <= n; i++)
        in >> c[i] >> t[i];
    st = 1, dr = 1e12, best = 0;
    while(st <= dr)
    {
        int mid = (st+dr)>>1;
        if (checkss(mid))
        {
            dr = mid-1;
            best = mid;
        }
        else
            st = mid+1;
    }
    for (i = 1; i<= n; i++)
        g[i] = c[i] * (best/(t[i]*2));
    sort(g+1, g+1+n, greater<int>());
    sum = 0;
    for (i = 1; i <= n && sum < m; i++)
    {
        sum += g[i];
        f++;
    }
    out << best << ' ' << f;
    return 0;
}