Pagini recente » Cod sursa (job #3251035) | Cod sursa (job #1543731) | Cod sursa (job #3292507) | Cod sursa (job #1663919) | Cod sursa (job #1839049)
#include<cstdio>
struct aa{int x,y;};
aa v[101],sol[101];
struct aaa{int x,y,c,poz;};
aaa ma[110][210];
int main ()
{freopen ("lapte.in","r",stdin);
freopen ("lapte.out","w",stdout);
int n,x,k,s,c1,c2,pp,q,i,j,l,minn,poz;
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++)
scanf("%d%d",&v[i].x,&v[i].y);
c1=1;
c2=200000;
while(c1<=c2)
{x=(c1+c2)/2;
pp=0;
for(i=0;i<=n;i++)
for(j=0;j<=k;j++)
ma[i][j].c=-1000000;
ma[0][0].c=0;
for(i=1;i<=n;i++)
for(j=0;j<=k;j++)
for(l=0;j+l<=k&&l*v[i].y<=x;l++)
if(ma[i][j+l].c<ma[i-1][j].c+(x-l*v[i].y)/v[i].x)
{
ma[i][j+l].c=ma[i-1][j].c+(x-l*v[i].y)/v[i].x;
ma[i][j+l].poz=j;
ma[i][j+l].y=l;
ma[i][j+l].x=(x-l*v[i].y)/v[i].x;
}
if(ma[n][k].c>=k)
{poz=ma[n][k].poz;
sol[n].x=ma[n][k].x;
sol[n].y=ma[n][k].y;
for(i=n-1;i>=1;i--)
{sol[i].x=ma[i][poz].x;
sol[i].y=ma[i][poz].y;
poz=ma[i][poz].poz;
}
q=x;
c2=x-1;
}
else
c1=x+1;
}
printf("%d\n",q);
for(i=1;i<=n;i++)
printf("%d %d\n",sol[i].x,sol[i].y);
return 0;
}