Cod sursa(job #823318)

Utilizator DaNutZ2UuUUBB Bora Dan DaNutZ2UuU Data 24 noiembrie 2012 21:34:35
Problema Lapte Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("lapte.in");
ofstream g("lapte.out");
int l, n, k, p, a[103], b[103], c[103][103], v[103][103], i, j;

void afisare(int x, int y)
{
    if(x > 0)
    {
        afisare(x - 1, y - v[x][y]);

        g << v[x][y] << " " << (i - v[x][y] * a[x]) / b[x] << '\n';
    }
}
int main ()
{

    f >> n >> l;
    for(i = 1; i <= n; i++)
        f >> a[i] >> b[i];

    for(i = 1; i <= 100; i++)
    {
        for(p = 0; p <= n; p++)
            for(j = 0; j <= l; j++)
                c[p][j] = -1000;

        c[0][0] = 0;

        for(p = 1; p <= n; p++)
            for(j = 0; j <= l; j++)
                for(k = 0; k <= j && k <= i / a[p]; k++)
                    if(c[p][j] < c[p - 1][j - k] + (i - k * a[p]) / b[p])
                    {
                        c[p][j] = c[p - 1][j - k] + (i - k * a[p]) / b[p];
                        v[p][j] = k;
                    }

        if(c[n][l] >= l) break;

    }
    g << i << '\n';
    afisare(n,l);

    f.close();
    g.close();

    return 0;

}