Pagini recente » Cod sursa (job #2407278) | Cod sursa (job #1915454) | Cod sursa (job #941541) | Cod sursa (job #2421019) | Cod sursa (job #1689573)
#include <fstream>
using namespace std;
int l,n,k,p,a[103],b[103],c[103][103],v[103][103],i,j;
ifstream f("lapte.in");
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 (){
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);
return 0;
}