Problema da prefeitura em crise

From AdonaiMedrado.Pro.Br
Jump to: navigation, search

Dificuldade única

Uma prefeitura está em período de baixa arrecadação e não tem condições de fazer o pagamento integral da sua folha de pagamento.

O prefeito decidiu que iria pagar com a verba disponível somente aquelas pessoas que recebem os menores salários, pois, segundo sua interpretação, elas seriam as mais necessitadas.

Você foi contratado como consultor externo para fazer um programa que, com base na folha de pagamento em formato XML, seja capaz de informar quais os funcionários que receberão salarial.

Algumas considerações:

  • Não havendo possibilidade de atender todas as pessoas de uma mesma faixa salarial, a prioridade é para aquelas com maior idade. Caso ainda haja empate, a prioridade é para aquelas cujo nome venha primeiro na ordem alfabética.
  • Não há homônimos na prefeitura.
  • A idade sempre será um número inteiro e estará no intervalo fechado entre 18 e 100.
  • O salário sempre será um número inteiro e estará no intervalo fechado entre 1 e 1000.
  • O programa deve ler a folha do arquivo d:\testcase\prefeitura\folha.xml. Neste arquivo as entradas não estão ordenadas. O formato deste arquivo segue o exemplo abaixo. A quantidade de registros nesse arquivo é indefinida.

Entrada

A entrada consistirá de vários casos de teste. Cada caso de teste contém uma linha na qual existirá apenas um inteiro K (0<=K<=1000000) representando a verba disponível para o pagamento da folha. O valor de K igual a zero indica o final do teste.

Saída

A saída deverá seguir rigorosamente o exemplo abaixo, indicando para cada K o nome dos funcionários que receberão salário. Assim, para cada caso de testes deve ser gerada a seguinte saída:

  • A primeira linha deve conter a cadeia "Teste N", onde N é representa o número do caso de teste começando em 1.
  • As linhas seguintes são os nomes dos funcionários em ordem alfabética.
  • A última linha deve ser em branco.

Arquivo de Exemplo

<PrefeituraEmCrise>
   <FolhaDePagamento>
       <Servidor>Z</Servidor>
       <Salario>10</Salario>
       <Idade>29</Idade>
   </FolhaDePagamento>
   <FolhaDePagamento>
       <Servidor>D</Servidor>
       <Salario>10</Salario>
       <Idade>30</Idade>
   </FolhaDePagamento>
   <FolhaDePagamento>
       <Servidor>A</Servidor>
       <Salario>10</Salario>
       <Idade>30</Idade>
   </FolhaDePagamento>
   <FolhaDePagamento>
       <Servidor>E</Servidor>
       <Salario>12</Salario>
       <Idade>68</Idade>
   </FolhaDePagamento>
   <FolhaDePagamento>
       <Servidor>C</Servidor>
       <Salario>5</Salario>
       <Idade>25</Idade>
   </FolhaDePagamento>
</PrefeituraEmCrise>

Exemplo

(Este exemplo considera o arquivo acima.)

Entrada

5
15
20
25
35
50
0

Saída

Teste 1
C

Teste 2
A
C

Teste 3
A
C

Teste 4
A
C
D

Teste 5
A
C
D
Z

Teste 6
A
C
D
E
Z