#include <stdio.h>
#define N_MAX 10
#define N_MAX2 100

void leggi_matrice(int mat[N_MAX][N_MAX], int indice[N_MAX2][2], int* n, int* m);
int inserisci(int mat[N_MAX][N_MAX], int indice[N_MAX2][2],int i, int j, int ele);
void cerca_indice( int indice[N_MAX2][2], int ele,int* i, int* j);
void cerca(int mat[N_MAX][N_MAX], int ele, int* i, int* j, int n ,int m);
void salva_file(int mat[N_MAX][N_MAX], int indice[N_MAX2][2]);

int main()
{
  int mat[N_MAX][N_MAX];
  int indice[N_MAX2][2];
  int n,m;
  int posi, posj;
  for(int i=0;i<N_MAX2;i++)
  {
     indice[i][0]=-1; indice[i][1]=-1;
  }
  
  leggi_matrice(mat,indice,&n,&m);
  cerca_indice(indice,3,&posi,&posj);
  printf("posi=%d, posj=%d\n", posi, posj);
  cerca(mat,30,&posi,&posj,n,m);
  printf("posi=%d, posj=%d\n", posi, posj);
  salva_file(mat,indice);
}


int inserisci(int mat[N_MAX][N_MAX], int indice[N_MAX2][2],int i, int j, int ele)
{
  if(indice[ele][0]==-1){
  	mat[i][j]=ele;
  	indice[ele][0]=i;
  	indice[ele][1]=j;
    return 1;
  }
  else
    return -1;
}

void leggi_matrice(int mat[N_MAX][N_MAX], int indice[N_MAX2][2], int* n, int* m)
{
  int ele;
  scanf("%d",n);
  scanf("%d",m);
  
  for(int i=0;i<*n;i++)
    for(int j=0;j<*m;j++)
    {
         do{
         	scanf("%d",&ele);
         }
         	while(inserisci(mat, indice,i, j, ele)<0);
    }
}


void cerca_indice( int indice[N_MAX2][2], int ele,int* i, int* j)
  {
    *i=indice[ele][0];
    *j=indice[ele][1];
  }               
                  
void cerca(int mat[N_MAX][N_MAX], int ele, int* i, int* j, int n, int m)
{
   int k,l;
   k=0; 
   *i=-1; *j=-1;
   while(k<n && *i<0)
   {
     l=0;
     while(l<m && *i<0)
     {
        if(mat[k][l]==ele)
        {*i=k;*j=l;};
        l++;
      }
     k++;
   }   

}

void salva_file(int mat[N_MAX][N_MAX], int indice[N_MAX2][2]){
  
FILE * fp;
  fp = fopen("matrici.bin","w");
   if (fp>0)
   {
      fwrite(mat, sizeof(int),N_MAX2,fp);
      fwrite(indice, sizeof(int),2*N_MAX2,fp);
      fclose(fp);
   }
             

}