/* * Solução do problema 'Conta de água' (OBI 2010 - Nível 1, Fase 1) * * Maurício de Lemos Rodrigues Collares Neto () */ #include int main() { /* Todo consumidor é obrigado a pagar os 7 reais de assinatura. */ int preco = 7, consumo; scanf("%d", &consumo); /* A idéia das condicionais abaixo é que podemos pagar "o final" da * conta sem alterar o preço do começo. Por exemplo, se a conta é de * 150 m^3, podemos pagar o consumo de 101 m^3 a 150 m^3 e pensar que * ainda temos uma conta de 100 m^3 a pagar. * * Note que temos uma condicional repetida várias vezes, com apenas * alguns números mágicos mudando. Isto sugere a substituição das repe- * tições por um loop e um vetor com os números mágicos, e fica como * exercício para o leitor. */ if(consumo > 100) { preco += 5 * (consumo - 100); consumo = 100; } if(consumo > 30) { preco += 2 * (consumo - 30); consumo = 30; } if(consumo > 10) preco += consumo - 10; printf("%d\n", preco); }