Pagini recente » Cod sursa (job #1689166) | Cod sursa (job #3261283) | Cod sursa (job #1273871) | Cod sursa (job #3032264) | Cod sursa (job #1205189)
#include<stdio.h>
#define N 101
int c[N][N],d[N][N],v1[N],v2[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;
while(n!=0){
fprintf(fout,"%d %d\n",c[n][l],(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);
return 0;
}