Neste problema deverá submeter uma classe ED115 contendo um programa completo para resolver o problema (ou seja, com o método main).
Pode assumir que no Mooshak terá acesso às classes de listas, pilhas e filas como dadas nas aulas (ou seja, não precisa de as incluir no código submetido).
Um supermercado
possui N caixas de pagamento, numeradas consecutivamente de 1
a N. Cada uma destas caixas possui uma fila de clientes, sendo
que no início todas as filas estão vazias.
C clientes estão a efectuar compras neste supermercado. Cada cliente é identificado por um nome, um tempo de chegada (em segundos) às caixas e número de produtos para pagar. Assim que um cliente chega à zona das caixas para pagar, ele escolhe a caixa que possui a fila com menos clientes e, em caso de empate, aquela em que o último cliente da fila tem o menor número de produtos. Se mesmo assim persistir um empate, deve escolher a fila com o menor número de ordem.
Um cliente com P produtos demora 10 + P*Ki segundos a ser atendido na caixa i, onde Ki é uma constante que define quantos segundos o operador da caixa i demora a processar um único produto, e 10 é o tempo constante necessário para o cliente proceder ao pagamento.
Se num mesmo segundo chega um cliente e um outro acaba as suas compras, deve processar primeiro o cliente que chega e só depois considerar o que termina.
A primeira linha do input contém o valor de uma flag que pode tomar os valores 1 ou 2. Este valor indica qual a subtarefa que deve resolver.
A segunda linha contém um inteiro N, o número de caixas a considerar. A terceira linha contém N inteiros separados por um espaço, sendo que o i-ésimo inteiro da linha representa Ki, a rapidez de atendimento da caixa i.
A quarta linha contém um inteiro C, o número de clientes. Seguem-se C linhas, cada uma contendo a descrição de um cliente no formato "NOME SEGUNDO_CHEGADA NUMERO_PRODUTOS", onde NOME, é uma sequência contíguas de caracteres (sem espaços) e SEGUNDO_CHEGADA e NUMERO_PRODUTOS números inteiros indicando respectivamente o segundo de chegada e o número de produtos do cliente. É garantido que os clientes vêm no input por ordem estritamente crescente do segundo de chegada.
No caso do valor da flag ser 1, pode assumir que apenas existirá uma caixa no supermercado. Devem ser escritas C linhas, uma por cada cliente, no formato "NOME TEMPO_CHEGADA TEMPO_SAIDA", onde o TEMPO_SAIDA é o segundo onde o cliente termina o seu atendimento.
No caso do valor da flag ser 2, deve escrever N linhas, uma por cada caixa. Cada uma destas linhas deve vir no formato "Caixa #i NUM_CLIENTES TOTAL_PRODUTOS", onde i é o número de ordem da caixa, NUM_CLIENTES é o número total de clientes atendidos nessa caixa e TOTAL_PRODUTOS é o número total de produtos desses mesmos clientes.
Input | Output |
1 1 2 3 Renata 12 4 Ana 25 1 Matilde 45 4 |
Renata 12 30 Ana 25 42 Matilde 45 63 |
---|
Input | Output |
2 3 1 1 1 6 Eduardo 5 4 Kyara 11 3 Rafaela 14 5 Nuria 18 5 Lucas 19 3 Barbara 28 4 |
Caixa #1: 3 11 Caixa #2: 2 8 Caixa #3: 1 5 |
---|
Última actualização: