Pagini recente » Cod sursa (job #203985) | Istoria paginii utilizator/kidsir | Cod sursa (job #698788) | Cod sursa (job #307545) | Cod sursa (job #2271698)
#include <fstream>
using namespace std;
ifstream f("lapte.in");
ofstream g("lapte.out");
int n , l , k , t , i, j;
int price[101][101],m[101][101],a[101],b[101];
void ans( int n, int l)
{
if( n != 0)
{
ans(n-1,l-price[n][l]);
g << price[n][l] << ' ' << (t-price[n][l]*a[n])/b[n] << '\n';
}
}
int main()
{
f >> n >> l;
for ( i = 1 ; i <= n ; i++ )
{
f >> a[i] >> b[i];
}
t = 0;
while ( m[n][l] < l )
{
t++;
for ( i = 0 ; i <= n ; i++ )
for ( j = 0 ; j <= l; j++ )
m[i][j] = -1000000000;
m[0][0] = 0;
for ( i = 1 ; i <= n ; i++ )
for ( j = 0 ; j <= l ; j++ )
for( k = 0 ; k*a[i] <= t ; k++ )
if(m[i][j]<m[i-1][j-k]+(t-k*a[i])/b[i])
{
price[i][j]=k;
m[i][j]=m[i-1][j-k]+(t-k*a[i])/b[i];
}
}
g << t << "\n";
ans(n, l);
return 0;
}