Pagini recente » Cod sursa (job #1060019) | Cod sursa (job #2913628) | Cod sursa (job #2087030) | Cod sursa (job #1427043) | Cod sursa (job #823318)
Cod sursa(job #823318)
#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;
}