si esatto deve contare i doppi e stamparli, ho provato a implementare la tua parte di programma ma mi da errore(crasha)
	codice:
	#include <stdio.h>
#define MAXM 20
#define MAXN 20
#define MAX 50
int main()
{
char contatore[MAX+1]={0};
char stampato=0;
int i,j,r,c,errore;
int a[MAXM][MAXN];
    
printf("inserisci il numero di righe : ");
   scanf("%d",&r);
   
   printf("\ninserisci il numero di colonne : ");
   scanf("%d",&c);
   for (i=0; i<r; i++){
      for (j=0; j<c; j++){
         printf("a[%d][%d] = ",i+1,j+1);
         scanf("%d",&a[i][j]);
         
      }
   }
  for(i=0; i<MAXM; i++)
    for(j=0; i<MAXN; j++)
      contatore[a[i][j]]++;
  for(i=0; i<r; i++){
    for (j=0; j<c; j++)
      printf("%3d",a[i][j]);
    printf("\n");
  }
  for(i=0; i<=MAX; i++)
    if(contatore[i]>1)
    {
      printf("Il numero %d comapre %d volte\n", i, contatore[i]);
      stampato=1;
    }
  if(stampato)printf("Nessun valore compare più d'una volta\n");
getch();
return 0;
}