Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void Explorar(FOLHA *F,int *Qntd, int *MaisUte, int *TempoEspera){
- //Yes fui overkill aqui, tava ainda a pensar na anterior e acabei por as juntar <.<
- if(!F)
- return;
- if(F->Info->NUtentes == 0){//se nao ha utentes, para que perder tempo?
- Explorar(F->Dir, Qntd, MaisUte, TempoEspera);
- Explorar(F->Esq, Qntd, MaisUte, TempoEspera);
- return;
- }
- if(F->numero_servico != *MaisUte && F->Info->NUtentes >= *Qntd){ //se o num de servico for diferente do ja guardado e o NUtentes for MAIOR OU IGUAL ao guardado
- if(F->Info->NUtentes == *Qntd){//se forem iguais desempate com o tempo de espera
- if(F->Info->Primeiro->Utente->HoraChegada < *TempoEspera){//se o tempo de espera do guardado for "mais recente" do que o 1º utente
- *MaisUte = F->numero_servico;
- *TempoEspera = F->Info->Primeiro->Utente->HoraChegada;
- }
- }
- else
- {
- F->numero_servico = *MaisUte;
- F->Info->Primeiro->Utente->HoraChegada = *TempoEspera;
- F->Info->NUtentes = *Qntd;
- }
- }
- Explorar(F->Dir, Qntd, MaisUte, TempoEspera);//vamos para a direita
- Explorar(F->Esq, Qntd, MaisUte, TempoEspera);//vamos para a esquerda
- }
- int questao_3A(Arv_Bin *A){
- if(!A)
- return 0;
- if(!A->Raiz)
- return 0;
- FOLHA *Root = A->Raiz;
- int Qntd = 0,//quantos utentos no servico
- MaisUte = 0,// servico com mais utentes
- TempoEspera = 0;//qual o tempo de espera do cliente
- if(Root->Dir){
- Explorar(Root->Dir, &Qntd, &MaisUte, &TempoEspera);
- }
- if(Root->Esq){
- Explorar(Root->Esq, &Qntd, &MaisUte, &TempoEspera);
- }
- return MaisUte;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement