Pagini recente » Cod sursa (job #2798304) | Cod sursa (job #2190020) | Cod sursa (job #3219363) | Cod sursa (job #1002573) | Cod sursa (job #713855)
Cod sursa(job #713855)
#include <iostream>
#include <fstream>
using namespace std;
int l,n,k,p,a[103],b[103],c[103][103],v[103][103];
ofstream g("lapte.out");
void afisare(int x, int y)
{ if(x)
{afisare(x-1,v[x][y]);
g<<y-v[x][y]<<" "<<c[x][y]-c[x-1][v[x][y]]<<'\n';
}
}
int main ()
{int i,j;
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=1;p<=n;p++)
for(j=0;j<=l;j++)
c[p][j]=0;
for(p=1;p<=n;p++)
for(j=0;j<=l;j++)
for(k=0;k<=j;k++)
if((i-(j-((c[p-1][k])?k:0))*a[p])>=0&&(c[p][j]<c[p-1][k]+(i-(j-((c[p-1][k])?k:0))*a[p])/b[p]))
{c[p][j]=c[p-1][k]+(i-(j-((c[p-1][k])?k:0))*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;
}