Cod sursa(job #1913294)

Utilizator vladdy47Bucur Vlad Andrei vladdy47 Data 8 martie 2017 12:29:43
Problema Garaj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
# include <bits/stdc++.h>

using namespace std;

const int Nmax = 1e5 + 5;

int n, k, C[Nmax], T[Nmax], v[Nmax];

void solve()
{
    int st = 1, dr = 1e9 * 2, mid, s, ans = 0, N = 0;
    bool da;

    while (st <= dr)
    {
        mid = (st + dr) >> 1, s = 0, da = false;
        for (int i = 1; i <= n; ++i)
        {
            s += C[i] * (mid / (T[i] * 2));
            if (s >= k)
            {
                dr = mid - 1;
                da = true;
                break;
            }
        }
        if (!da) st = mid + 1;
    }

    printf("%d ", st);

    for (int i = 1; i <= n; ++i)
        v[++N] = C[i] * (st / (T[i] * 2) );

    sort(v + 1, v + N + 1);
    reverse(v + 1, v + N + 1);

    s = 0;

    for (int i = 1; i <= n; ++i){
        s += v[i], ++ans;
        if (s >= k) break;
    }

    printf("%d\n", ans);

}
int main ()
{
    freopen("garaj.in", "r", stdin);
    freopen("garaj.out", "w", stdout);

    scanf("%d %d\n", &n, &k);

    for (int i = 1; i <= n; ++i)
        scanf("%d %d\n", &C[i], &T[i]);

    solve();

    return 0;
}