Cod sursa(job #1799993)

Utilizator TimitocArdelean Andrei Timotei Timitoc Data 7 noiembrie 2016 09:45:58
Problema Lapte Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <iostream>
#include <cstdio>
#define MAXN 120

using namespace std;

int n, L;
int a[MAXN], b[MAXN];
int din[MAXN][MAXN];

void read()
{
    scanf("%d %d", &n, &L);
    for (int i = 1; i <= n; i++)
        scanf("%d %d", &a[i], &b[i]);

}

int check(int timp)
{
    for (int i = 1; i <= n; i++) {
        for (int j = 0; j <= L; j++) {
            din[i][j] = -1;
            for (int k = j; k >= 0; k--) {
                int np = din[i-1][k] + (timp-a[i]*(j-k))/b[i];
                if (np > din[i][j]) {
                    din[i][j] = np;
                }
            }
        }
    }
    return (din[n][L] >= L);
}

void solve()
{
    int step, timp;
    step = 64, timp = 100;
    for (step; step; step >>= 1) {
        if (timp - step >= 0 && check(timp-step))
            timp -= step;
    }
    printf("%d", timp);
}

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

    read();
    solve();

    return 0;
}