Pagini recente » Cod sursa (job #1757737) | Cod sursa (job #3146927) | Cod sursa (job #1755369) | Cod sursa (job #2441757) | Cod sursa (job #2314403)
#include <bits/stdc++.h>
using namespace std;
ifstream f("lapte.in");
ofstream g("lapte.out");
int n,l,t,i,j,p,lo,hi,a[110],b[110],ans[110],qu[110][110];
bool ok(int mi)
{
int dyn[110];
memset(dyn,-128,sizeof(dyn));
dyn[0]=0;
for(i=1;i<=n;i++)
for(p=l;p>=0;p--)
for(j=0;j*a[i]<=mi&&j<=p;j++)
{
int aux=dyn[p-j]+(mi-a[i]*j)/b[i];
dyn[p]=max(dyn[p],aux);
if(dyn[p]==aux)
qu[i][p]=j;
}
return (dyn[l]>=l);
}
int main()
{
f>>n>>l;
for(i=1;i<=n;i++)
f>>a[i]>>b[i];
lo=1,hi=100;
while(lo<hi)
{
int mi=(lo+hi)/2;
if(ok(mi))
hi=mi;
else
lo=mi+1;
}ok(lo);
g<<lo<<'\n';
for(j=l,i=n;i>=1;j-=qu[i][j],i--)
ans[i]=qu[i][j];
for(i=1;i<=n;i++)
g<<ans[i]<<' '<<(lo-ans[i]*a[i])/b[i]<<'\n';
return 0;
}