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);
}