Problema
Un sistema de nómina trata a cada empleado como un Employee con un método WeeklyPay(), y cada tipo de empleado lo sobrescribe.
Cada empleado se escribe como:
salaried <annual>: gana annual / 52.hourly <rate> <hours>: gana rate × hours por las primeras 40 horas y 1.5 × rate por cada hora por encima de 40.commission <base> <rate> <sales>: gana base + rate × sales.
Implementa weekly_payroll(employees).
Entrada
employees: Los empleados. Los números pueden tener decimales.
Output
Devuelve el pago semanal total. Se aceptan respuestas dentro de 1e-6.
Restricciones
0 ≤ número de empleados ≤ 10,000
Todos los números están entre 0 y 10^7; hours ≤ 100
Ejemplos
Entrada:
employees = ["salaried 52000", "hourly 20 45"]
Salida esperada:
expected = 1950.0
Entrada:
std::vector<std::string> employees = {"salaried 52000", "hourly 20 45"};
Salida esperada:
double expected = 1950.0;
Entrada:
string[] employees = new string[] {"salaried 52000", "hourly 20 45"};
Salida esperada:
double expected = 1950.0;
Explicación
El empleado asalariado gana 52000 / 52 = 1000. El empleado por hora gana 20 × 40 + 30 × 5 = 950. Total 1950.
Entrada:
employees = ["commission 300 0.1 2500"]
Salida esperada:
expected = 550.0
Entrada:
std::vector<std::string> employees = {"commission 300 0.1 2500"};
Salida esperada:
double expected = 550.0;
Entrada:
string[] employees = new string[] {"commission 300 0.1 2500"};
Salida esperada:
double expected = 550.0;
Explicación
300 + 0.1 × 2500 = 550.
Cómo abordarlo
Inténtalo primero por tu cuenta y luego abre las pistas una a una.
Pista 1
Trata cada tipo de empleado con su propia fórmula.
Pista 2
El pago por hora es normal las primeras 40 horas y 1,5 veces la tarifa después.
Pista 3
Conserva los decimales: un salario anual entre 52 rara vez da exacto.
Complejidad esperada
tiempo O(número de empleados), espacio extra O(1)
Referencias
Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.