Problema
Um sistema de folha de pagamento trata cada funcionário como um Employee com um método WeeklyPay(), e cada tipo de funcionário o sobrescreve.
Cada funcionário é escrito como:
salaried <annual>: ganha annual / 52.hourly <rate> <hours>: ganha rate × hours pelas primeiras 40 horas e 1.5 × rate por cada hora além de 40.commission <base> <rate> <sales>: ganha base + rate × sales.
Implemente weekly_payroll(employees).
Input
employees: Os funcionários. Os números podem ter decimais.
Output
Retorne o pagamento semanal total. Respostas dentro de 1e-6 são aceitas.
Restrições
0 ≤ número de funcionários ≤ 10,000
Todos os números estão entre 0 e 10^7; hours ≤ 100
Exemplos
Entrada:
employees = ["salaried 52000", "hourly 20 45"]
Saída esperada:
expected = 1950.0
Entrada:
std::vector<std::string> employees = {"salaried 52000", "hourly 20 45"};
Saída esperada:
double expected = 1950.0;
Entrada:
string[] employees = new string[] {"salaried 52000", "hourly 20 45"};
Saída esperada:
double expected = 1950.0;
Explicação
O funcionário assalariado ganha 52000 / 52 = 1000. O funcionário por hora ganha 20 × 40 + 30 × 5 = 950. Total 1950.
Entrada:
employees = ["commission 300 0.1 2500"]
Saída esperada:
expected = 550.0
Entrada:
std::vector<std::string> employees = {"commission 300 0.1 2500"};
Saída esperada:
double expected = 550.0;
Entrada:
string[] employees = new string[] {"commission 300 0.1 2500"};
Saída esperada:
double expected = 550.0;
Explicação
300 + 0.1 × 2500 = 550.
Como abordar
Tente sozinho primeiro e depois abra uma dica de cada vez.
Dica 1
Trate cada tipo de funcionário com sua própria fórmula.
Dica 2
O pagamento por hora é normal nas primeiras 40 horas e 1,5 vez a taxa depois disso.
Dica 3
Mantenha os decimais: salário anual dividido por 52 raramente dá exato.
Complexidade esperada
tempo O(número de funcionários), espaço extra O(1)
Referências
Este desafio foi adaptado para o CodeUtility. Siga o enunciado e as restrições acima.