Neste problema deverá submeter uma classe ED231 contendo um programa completo para resolver o problema (ou seja, com o método main).
A divisão de epidemiologia e estatística do serviço de saúde da Algoritmolândia tem disponíveis os dados de propagação de um novo vírus ED-VIR-20, sendo registado diariamente o número total de casos confirmados. Será que podes ajudá-los a calcular algumas estatísticas sobre esses dados?
Na primeira linha do input vem um número N indicando o número de dias consecutivos durante os quais foi registo o total de casos confirmados (2 ≤ N ≤ 100).
A segunda linha contém uma sequência de N inteiros C(i) separados por um espaço, indicando o número de casos confirmados em cada dia (0 ≤ C(i) ≤ 105). A sequência é garantidamente crescente (C(i-1) ≤ C(i)).
A terceira linha contém o valor de uma flag que pode tomar os valores 1, 2 ou 3. Este valor indica qual a subtarefa a que deve responder.
O output depende do valor da flag dada no input:
Se a flag for 1 (30%), deve imprimir uma linha contendo dois inteiros separado por um espaço: o valor mínimo e o valor máximo de novos casos por dia. O valor de novos casos no dia i é igual a C(i) - C(i-1).
Se a flag for 2 (40%): deve imprimir uma linha contendo dois inteiros separado por um espaço: a quantidade de períodos de baixa propagação e o maior tamanho de um período de baixa propagação. Um período de baixa propagação é definido como sendo uma sequência de dias consecutivos onde a subida percentual diária de casos confirmados é sempre inferior ou igual a 5%. O seu tamanho é a quantidade de números na sequência. A subida percentual no dia i é igual a (C(i) - C(i-1)) / C(i-1). É garantido nesta flag que pelo menos um dia tem subida inferior ou igual a 5%.
Se a flag for 3 (30%), deve imprimir um pequeno gráfico de barras indicando o total de casos confirmados por dia. A cada coluna do gráfico corresponde um dia i, e a altura da barra corresponde ao número de casos nesse dia Ci. A barra deve ser desenhada usando carateres '#', onde cada '#' corresponde a 100 casos, ou seja, o número de '#' no dia i corresponde a C(i) / 100. Os espaços em branco no gráfico devem ser representados pelo carater '.', e não devem ser imprimidas mais linhas do que o necessário (tantas linhas quantas as necessárias para conter a maior barra, sendo garantida que existe pelo menos um dia com pelo menos 100 casos). Verifiquem o exemplo de input para confirmar se perceberam o pedido.
Input | Output | Explicação |
---|---|---|
8 2 4 8 14 19 25 28 29 1 |
1 6 |
Os aumentos são de +2, +4, +6, +5, +6, +3, +1. O menor aumento corresponde a +1; o maior aumento corresponde a +6. |
Input | Output | Explicação |
---|---|---|
11 100 105 110 116 121 128 140 141 146 150 153 2 |
3 4 |
As subidas percentuais diárias são: 5.00%, 4.76%, 5.45%, 4.31%, 5.79%, 9.38%, 0.71%, 3.55%, 2.74%, 2.00% As subidas inferiores ou iguais a 5% estão indicadas a verde. Um período de baixa propagação é uma sequência de dias a verde. Existem 3 periodos de dias consecutivos a verde, de tamanhos 2, 1 e 4. |
Input | Output | Explicação |
---|---|---|
8 42 100 202 299 407 603 1045 1320 3 |
.......# .......# .......# ......## ......## ......## ......## .....### .....### ....#### ....#### ..###### .####### |
O gráfico 8 colunas (8 dias) e 13 linhas (a altura da maior barra é de 13, correspondendo ao dia com 1320). A altura de cada barra é o valor desse dia a dividir por 100. Os '.' correspondem a espaços no gráfico sem barra. |
Estruturas de Dados (CC1007)
DCC/FCUP - Faculdade de Ciências da Universidade do Porto