#include <stdio.h>
#include <stdlib.h>

int f2 (int x, int y) {
  int i, j, **t; 

  /* Alocação de memória para a matriz t */
  if ((t = malloc((x+1)*sizeof(int *))) == NULL) {
    printf("Erro na alocação de memória!\n"); 
    exit(0); 
  }
  for (i=1; i<=x; i++) 
    if ((t[i] = malloc((y+1)*sizeof(int))) == NULL) {
      printf("Erro na alocação de memória!\n"); 
      exit(0); 
    }
   
  for (i = 1; i <= x; i++)
    t[i][1] = 0;
  for (j = 2; j <= y; j++)
    t[1][j] = 0;

  for (i = 2; i <= x; i++) 
    for (j = 2; j <= y; j++) 
      t[i][j] = t[i-1][j] + t[i][j-1] + i*j;
  return t[x][y];
}

int main() {
  int n, m;

  printf("Digite n e m: ");
  scanf("%d %d", &n, &m);

  printf("\nf(%d,%d) = %d\n", n, m, f2(n,m));
  return 0;
}
