Pagini recente » Cod sursa (job #1795133) | Cod sursa (job #2156439) | Cod sursa (job #2503078) | Cod sursa (job #1536887) | Cod sursa (job #1205191)
#include<stdio.h>
#define N 101
int c[N][N],d[N][N],v1[N],v2[N],sol1[N],sol2[N];
FILE *fout;
void solve(int n,int l){
int i,j;
for(i=0; i<=n; i++)
for(j=0; j<=l; j++)
d[i][j]=-999999999;
d[0][0]=0;
int timp;
for(timp=1; timp<=100; timp++){
int k;
for(i=1; i<=n; i++)
for(j=0; j<=l; j++)
for(k=0; k<=timp/v1[i]; k++)
if(d[i][j]<d[i-1][j-k]+(timp-k*v1[i])/v2[i]){
c[i][j]=k;
d[i][j]=d[i-1][j-k]+(timp-k*v1[i])/v2[i];
}
if(d[n][l]>=l){
fprintf(fout,"%d\n",timp);
int cop=timp,cont=0;
while(n!=0){
sol1[cont]=c[n][l];
sol2[cont++]=(cop-c[n][l]*v1[n])/v2[n];
timp=l;
l-=c[n][l];
n--;
}
return 0;
}
for(i=0; i<=n; i++)
for(j=0; j<=l; j++)
d[i][j]=-999999999;
d[0][0]=0;
}
}
int main(){
FILE *fin;
fin=fopen("lapte.in","r");
fout=fopen("lapte.out","w");
int n,l;
fscanf(fin,"%d%d",&n,&l);
int i;
for(i=1; i<=n; i++)
fscanf(fin,"%d%d",&v1[i],&v2[i]);
solve(n,l);
for(i=0;i<n;i++)
fprintf(fout,"%d %d\n",sol1[i],sol2[i]);
return 0;
}