Pagini recente » Cod sursa (job #2113849) | Cod sursa (job #2051510) | Cod sursa (job #34693) | Cod sursa (job #429532) | Cod sursa (job #3296625)
#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;
}