55> Ci sono 2 gare di 10 atleti con punteggio [1..50]
ordinate gara1 e gara2 in modo decrescente
scrivere gli atleti che hanno realizzato i 3 migliori tempi tenendo conto delle due gare

es di 2 gare tra 5 atleti: (1 7 sta per atleta1 con punteggio 7)
gara1: 1 7, 2 21, 3 12, 4 45, 5 13
gara2: 1 17, 2 20, 3 12, 4 41, 5 18

ordinamento gara 1
4 45, 2 21, 5 13, 3 12, 1 7

ordinamento gara 2
4 41, 2 20, 5 18, 1 17, 3 12

3 migliori tempi:
4 45, 4 41, 2 21
(cioè l'atleta4 si piazza al primo posto con 45 e al secondo posto con 41, terzo l'atleta2 con 21)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define DIM 10

void trova_max(int [][DIM], int [][DIM], int [][3]);
void sort(int [][DIM]);
void visualizza(int [][DIM]);
void carica(int [][DIM]);
int main(){
    srand(time(NULL));
    int m1[2][DIM],m2[2][DIM];
    int max[2][3];
    int i;
    
    carica(m1);
    carica(m2);
    printf("Gara 1:\n");
    visualizza(m1);
    printf("Gara 2:\n");
    visualizza(m2);
    sort(m1);
    sort(m2);
    printf("Gara 1:\n");
    visualizza(m1);
    printf("Gara 2:\n");
    visualizza(m2);
    trova_max(m1,m2,max);
    
    printf("I massimi 3 valori sono: ");
    for(i=0;i<3;i++){
        printf("%d nella posizione %d\n",max[0][i],max[1][i]);
    }
    return 0;
}

void trova_max(int m1[2][DIM], int m2[2][DIM], int max[2][3]){
    int c1,c2,i;
    c1=c2=0;
    i=0;
    while((c1+c2)<3){
        if(m1[0][c1]>m2[0][c2]){
            max[0][i]=m1[0][c1];
            max[1][i]=m1[1][c1];
            c1++;
        } else {
            max[0][i]=m2[0][c2];
            max[1][i]=m2[1][c2];
            c2++;
        }
        i++;
    }
}

void sort(int m[2][DIM]){
    int i,j,temp;
    for(i=0;i<DIM;i++){
        for(j=0;j<DIM-i-1;j++){
            if(m[0][j]<m[0][j+1]){
                temp=m[0][j];
                m[0][j]=m[0][j+1];
                m[0][j+1]=temp;
                temp=m[1][j];
                m[1][j]=m[1][j+1];
                m[1][j+1]=temp;
                
            }
        }
    }

}

void carica(int m[2][DIM]){
    int i;
    for(i=0;i<DIM;i++){
        m[1][i]=i+1;
        m[0][i]=rand()%49+1;
    }
}

void visualizza(int m[2][DIM]){
    int i,j;
    for(i=0;i<2;i++){
        for(j=0;j<DIM;j++){
            printf("%3d",m[i][j]);
        }
        putchar('\n');
    }
    putchar('\n');
}
    
  
055.c