//ricevimento 2023 07 05 (luglio)

Monitor giav{
condition ok2tiro[NATLETI] ok2lanciato;
int conta[NATLETI] = {0,…,0}
int next = 0
bool lanciok;
int count = 0;

boolean pronto(i){
	if(conta[i]<=3){
		if (next != i)
			ok2tiro.wait();
		return true;
	} else {
		return false;
	}
	lanciok=false
}

void lanciato(i){
	lanciok=true;
	ok2lanciato.signal();
	conta[i]++;
}

int lanciofatto(){
	if (not lanciok)
		ok2lanciato.wait();
	current = next;
	next = (next + 1) % NATLETI;
	count++;
	if (count >= 3 * NATLETI)
		return -1;
	else
		return current;
}

void registraechiama(i, m){
	ranking.add(i,m);
	ok2tiro[next].signal();
}

Queue classifica(){
	//ordina in modo decrescente la classifica in base al secondo parametro (la misura)
	c = ranking.orderByM(class);
	return c;
}