quarta-feira, 24 de outubro de 2018

URI PROBLEMA 1023 - Estiagem SOLUÇÃO EM C

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 linhas contém um par de valores (1 ≤ X ≤ 10) e (1 ≤ ≤ 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

URI PROBLEMA 1133 - Resto da Divisão SOLUÇÃO EM C

URI Online Judge | 1133 Resto da Divisão Adaptado por Neilor Tonin, URI   Brasil Timelimit: 1 Escreva um programa que leia 2 valo...