class SalaryOptimizer:
    def __init__(self, market_data, employee_perf):
        self.q_table = np.zeros([len(market_data), len(employee_perf)])
        self.alpha = 0.1
        self.gamma = 0.6
        
    def update_model(self, state, action, reward, next_state):
        old_value = self.q_table[state, action]
        next_max = np.max(self.q_table[next_state])
        new_value = (1 - self.alpha) * old_value + self.alpha * (reward + self.gamma * next_max)
        self.q_table[state, action] = new_value
        
    def get_optimal_salary(self, current_state):
        return np.argmax(self.q_table[current_state])