Pagini recente » Cod sursa (job #3277188) | Cod sursa (job #982160) | Cod sursa (job #3151375) | Cod sursa (job #778447) | Cod sursa (job #1833123)
#include <fstream>
using namespace std;
int t,n,l,i,j,k,best[102][102],a[102],b[102],sol[102][102];
void ans(int i,int l)
{
if(i==0)
return;
ans(i-1,l-sol[i][l]);
g<<sol[i][l]<<" "<<(t-sol[i][l]*a[i])/b[i]<<'\n';
}
int main()
{
ifstream f("lapte.in");
ofstream g("lapte.out");
f>>n>>l;
for(i=1; i<=n; i++)
f>>a[i]>>b[i];
for(t=1; t<=100; t++)
{
for(i=0; i<=100; i++)
for(j=0; j<=100; j++)
best[i][j]=-1000000000;
best[0][0]=0;
for(i=1; i<=n; i++)
for(k=0; k<=l; k++)
for(j=0; j<=t/a[i]&&j<=k; j++)
if(best[i][k]<best[i-1][k-j]+(t-j*a[i])/b[i])
{
sol[i][k]=j;
best[i][k]=best[i-1][k-j]+(t-j*a[i])/b[i];
}
if(best[n][l]>=l)
{
g<<t<<'\n';
ans(n,l);
return 0;
}
}
g<<t<<'\n';
ans(n,l);
f.close(); g.close();
return 0;
}