Cod sursa(job #3296625)

Utilizator Mihai_OctMihai Octavian Mihai_Oct Data 14 mai 2025 18:21:49
Problema Lapte Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("lapte.in");
ofstream fout("lapte.out");
const int INF = 1e7;
int n, l, i, j, k, t, a[102], b[102], d[102][102];
int rasp[102][102];

static inline void Afis(int x, int y) {
    if(!x) return;

    Afis(x - 1, y - rasp[x][y]);
    fout << rasp[x][y] << " " << (t - rasp[x][y] * a[x]) / b[x] << "\n";
}

int main() {
    fin >> n >> l;
    for(i = 1; i <= n; i++) fin >> a[i] >> b[i];

    for(t = 1; t <= 100; t++) {
        for(i = 0; i <= n; i++) {
            for(j = 0; j <= l; j++) d[i][j] = -INF;
        }

        d[0][0] = 0;
        for(i = 1; i <= n; i++) {
            for(j = 0; j <= l; j++) {
                for(k = 0; k <= j && k <= t / a[i]; k++) {
                    if(d[i][j] < d[i - 1][j - k] + (t - k * a[i]) / b[i]) {
                        d[i][j] = d[i - 1][j - k] + (t - k * a[i]) / b[i];
                        rasp[i][j] = k;
                    }
                }
            }
        }
        if(d[n][l] >= l) break;
    }
    fout << t << "\n";
    Afis(n, l);

    return 0;
}