#! /usr/bin/env python3 # OBI 2023 - Fase 2 # Pequena Empresa - Solução O(N^2 + A * N) # Mateus Bezrutchka def read_int(): return int(input()) def read_int_list(): return [int(x) for x in input().split()] n = read_int() chefe = [] salario = [] for i in range(n): [c, sal] = read_int_list() salario.append(sal) chefe.append(c - 1) # estou indexando do zero insatisfeito = [False for i in range(n)] insatisfacao_atual = 0 def calc_insatisfeito(i): insatisfeito[i] = False for k in range(n): if i != k and chefe[k] == i and salario[k] > salario[i]: insatisfeito[i] = True return def calc_insatisfacao_inicial(): global insatisfacao_atual for i in range(n): calc_insatisfeito(i) if insatisfeito[i]: insatisfacao_atual += 1 # apenas duas pessoas podem ter sido afetadas pela # mudança atual: o próprio funcionario i, e o chefe dele def atualiza_salario(i, val): global insatisfacao_atual c = chefe[i] old_c_ins, old_i_ins = insatisfeito[c], insatisfeito[i] salario[i] = val calc_insatisfeito(i) calc_insatisfeito(c) new_c_ins, new_i_ins = insatisfeito[c], insatisfeito[i] if old_i_ins != new_i_ins: insatisfacao_atual += (1 if new_i_ins else -1) if i != 0 and old_c_ins != new_c_ins: insatisfacao_atual += (1 if new_c_ins else -1) calc_insatisfacao_inicial() print(insatisfacao_atual) a = read_int() for i in range(a): [funcionario, novo_salario] = read_int_list() funcionario -= 1 atualiza_salario(funcionario, novo_salario) print(insatisfacao_atual)