Pagini recente » Cod sursa (job #2607601) | Cod sursa (job #615118) | Cod sursa (job #1521923) | Cod sursa (job #392622) | Cod sursa (job #600619)
Cod sursa(job #600619)
#include <cstdio>
#define MAX 105
#define INF (-(1<<30))
int D[MAX][MAX], C[MAX][MAX], A[MAX], B[MAX];;
void Print(int N, int L, int T){
if(N != 0){
Print(N-1, L-C[N][L], T);
printf("%d %d\n", C[N][L], (T-C[N][L]*A[N])/B[N]);
}
}
int main(){
freopen("lapte.in", "r", stdin);
freopen("lapte.out", "w", stdout);
int N, i, j, l, T, L, x, y;
scanf("%d%d", &N, &L);
for(i=1; i<=N; i++)
scanf("%d%d", A+i, B+i);
for(T=1; T<=100; T++){
for(x=0; x<=N; x++)
for(y=0; y<=L; y++)
D[x][y]=INF;
D[0][0]=0;
for(i=1; i<=N; i++)
for(l=0; l<=L; l++)
for(j=0; j*A[i]<=T; j++)
if(D[i][l] < D[i-1][l-j]+(T-j*A[i])/B[i]){
C[i][l]=j;
D[i][l]=D[i-1][l-j]+(T-j*A[i])/B[i];
}
if(D[N][L]>=L){
printf("%d\n", T);
Print(N, L, T);
break;
}
}
return 0;
}