Pagini recente » Cod sursa (job #2468551) | Cod sursa (job #534350) | Cod sursa (job #799495) | Cod sursa (job #365901) | Cod sursa (job #713857)
Cod sursa(job #713857)
#include <iostream>
#include <fstream>
using namespace std;
int l,n,k,p,a[103],b[103],c[103][103],v[103][103],i,j;
ofstream g("lapte.out");
void afisare(int x, int y)
{ if(x)
{afisare(x-1,y-v[x][y]);
g<<v[x][y]<<" "<<(i-v[x][y]*a[x])/b[x]<<'\n';
}
}
int main ()
{
ifstream f("lapte.in");
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;
}