Cod sursa(job #610416)

Utilizator DaNutZ2UuUUBB Bora Dan DaNutZ2UuU Data 27 august 2011 08:45:40
Problema Lapte Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#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;

}