Este repositório contém a solução para o Segundo Exercício-Programa (EP2) da disciplina ACH2002 - Introdução à Análise de Algoritmos (Segundo Semestre de 2025) na EACH-USP.
O projeto simula a gestão de uma fila de triagem em uma unidade de pronto-atendimento. Assim, o objetivo é garantir que pacientes com riscos cumulativos maiores recebam atendimento prioritário, indo além da simples ordem de chegada e considerando a gravidade clínica, o tempo de espera e o direito a atendimento preferencial por lei. No caso, o programa lê um arquivo .csv contendo a lista de pacientes e gera uma lista ordenada para atendimento, seguindo regras de reclassificação e critérios de desempate.
Antes da ordenação final, pacientes que excedem o tempo limite de espera seguro para sua cor original são promovidos para o próximo nível de gravidade:
- Laranja > 10 min ➔ Vermelho
- Amarelo > 60 min ➔ Laranja
- Verde > 120 min ➔ Amarelo
- Azul > 240 min ➔ Verde (Nota: Cada paciente só pode ser escalonado uma única vez.)
A fila é organizada seguindo a seguinte hierarquia de prioridade:
- Gravidade (Cor): Vermelho > Laranja > Amarelo > Verde > Azul.
- Desempate (Vermelho/Laranja): Unicamente pelo tempo de espera (maior primeiro).
- Atendimento Preferencial: Idoso, PCD, Gravida, Pessoa Obesa, Recem Nascido são atendidos antes de "N/A".
- Tempo: Se persistir o empate, prioriza-se quem espera há mais tempo.
O sistema foi desenvolvido em Linguagem C utilizando as seguintes estruturas e algoritmos:
- Lista Sequencial Dinâmica: Implementação de uma struct para gerenciar a lista de pacientes com realocação dinâmica de memória (realloc) para garantir escalabilidade.
- MergeSort: Utilização de um algoritmo de ordenação eficiente e estável, adaptado com uma função de comparação customizada para lidar com os múltiplos critérios de prioridade exigidos.
- Manipulação de Arquivos: Leitura de arquivos .csv via strtok e escrita formatada para o arquivo de saída.
- Compilação:
gcc ep.c -o EP- Execução:
./EP pacientes.csvO programa gera um arquivo chamado OrdemDeAtendimentos.csv contendo a lista final de pacientes no mesmo formato da entrada, porém reclassificados e ordenados conforme as regras de triagem.