Turni 5 testcase non corretti

Ciao, sto tentando di risolvere il problema turni ma continuo a totalizzare il 75% sbagliando 5 testcase su 20.
Qualcuno mi sa dare una dritta su come risolvere?

Grazie

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

    typedef struct{int inizio; int fine;}Persona;

    int n;
    Persona p[50];

    int cmp(void* a, void* b)
    {
        Persona c=*((Persona*)a);
        Persona d=*((Persona*)b);
        
        return c.inizio-d.inizio;
    }

    int next(int pers)
    {
        int attuale=pers;
        int i=pers+1;
        int imax=pers+1, max=p[pers+1].fine;
        while(p[i].inizio<=(p[attuale].fine+1))
        {
            if(p[i].fine>max)
            {
                max=p[i].fine;
                imax=i;
            }
            i++;
        }
        return imax;
    }

    int chiInizia()
    {
        int i=0;
        int max=0;
        int imax=0;
        while(p[i].inizio==0)
        {
            if(p[i].inizio>max)
            {
                max=p[i].inizio;
                imax=i;
            }
            i++;
        }
        
        return imax;
    }

    main()
    {
        freopen("input.txt", "r", stdin);
        freopen("output.txt", "w", stdout);
        
        int giorni;
        
        scanf("%d", &giorni);
        scanf("%d", &n);
        
        int i;
        
        for(i=0; i<n; i++)
        {
            scanf("%d%d", &p[i].inizio, &p[i].fine);
        }
        
        qsort(p, n, sizeof(Persona), cmp);
        
        int guardie=1;
        int attuale=chiInizia();
        
        while(p[attuale].fine<giorni-1)
        {
            attuale=next(attuale);
            guardie++;
        }
        
        printf("%d", guardie);
    }

Leggendo il codice si vede che hai capito la soluzione del problema: ogni volta cercare la persona disponibile dal giorno che ti serve (scegliendo quelle disponibili anche prima di quel giorno) che copra l arco di tempo più grande. Purtroppo non saprei aiutarti con il codice, conoscendo il c++ ho inteso a grosso modo ciò che fai.
La funzione di ordinamento per cosa ordina? Il void nel passaggio di parametri che fa ?

La funzione cmp serve per stabilire il criterio di ordinamento dell’array di persone che verrá utilizzato dalla funzione di libreria qsort.
L’ordinamento quindi avviene per data di inizio.