URI Online Judge | 1023
Estiagem
Por Neilor Tonin, URI
Brasil
Timelimit: 2
Devido às constantes estiagens que aconteceram nos últimos tempos em algumas regiões do Brasil, o governo federal criou um órgão para a avaliação do consumo destas regiões com finalidade de verificar o comportamento da população na época de racionamento. Este órgão responsável irá pegar algumas cidades (por amostragem) e verificará como está sendo o consumo de cada uma das pessoas da cidade e o consumo médio de cada cidade por habitante.
Entrada
A entrada contém vários casos de teste. A primeira linha de cada caso de teste contém um inteiro N (1 ≤ N ≤ 1*106), indicando a quantidade de imóveis. As N linhas contém um par de valores X (1 ≤ X ≤ 10) e Y (1 ≤ Y ≤ 200), indicando a quantidade de moradores de cada imóvel e o respectivo consumo total de cada imóvel (em m3). Com certeza, nenhuma residência consome mais do que 200 m3 por mês. O final da entrada é representado pelo número zero.
Saída
Para cada entrada, deve-se apresentar a mensagem “Cidade# n:”, onde n é o número da cidade seguindo a sequência (1, 2, 3, ...) e em seguida deve-se listar, por ordem ascendente de consumo, a quantidade de pessoas seguido de um hífen e o consumo destas pessoas, arredondando o valor para baixo. Na terceira linha da saída deve-se mostrar o consumo médio por pessoa da cidade, com 2 casas decimais sem arredondamento, considerando o consumo real total. Imprimir uma linha em branco entre dois casos de teste consecutivos. No fim da saída não deve haver uma linha em branco.
#include <stdio.h>
int main()
{
int N, X, Y, i, serial = 1, sumX, sumY, j;
int total1, total2, diff;
while(scanf("%d", &N) != 0){
sumX = 0, sumY = 0;
int Resident[210] = {0};
if(N == 0){
break;
}
for(i = 0; i < N; i++){
scanf("%d %d", &X, &Y);
sumX = sumX + X;
sumY = sumY + Y;
Resident[Y/X] += X;
}
printf("Cidade# %d:\n", serial);
serial++;
j = 0;
for(i = 0; i < 210; i++){
if(Resident[i] > 0){
if (j > 0){
printf(" ");
}
j++;
printf("%d-%d", Resident[i], i);
}
}
printf("\n");
total1 = (double)sumY / (double)sumX * 100;
total2 = (double)sumY / (double)sumX;
total2 = total2 * 100;
diff = total1 - total2;
total1 = total1 / 100;
printf("Consumo medio: %d.%02d m3.\n", total1, diff);
}
return 0;
}
Nenhum comentário:
Postar um comentário