Вот мой код def calculate_result(n, arr, k): # Суммируем положительные значения total_sum = sum(value for value in arr if value > 0) zero_segment_count = 0 in_zero_segment = False # Указывает, находимся ли в сегменте из нулей
for value in arr: if value <= 0: # Если значение ноль или отрицательное if not in_zero_segment: # Мы не в сегменте из нулей zero_segment_count += 1 # Увеличиваем сегмент in_zero_segment = True else: in_zero_segment = False # Если положительное значение, сбрасываем
def main(): t = int(input()) # Количество тестов results = []
for _ in range(t): n = int(input()) # Считываем количество элементов в тесте arr = []
for _ in range(n): sign, p = input().split() # Считываем знак и значение p = int(p) value = (1 << p) if sign == '+' else -(1 << p) # Преобразуем в соответствующее значение arr.append(value) # Добавляем в массив
sign_k, p_k = input().split() # Считываем k k = (1 << int(p_k)) if sign_k == '+' else -(1 << int(p_k))
result = calculate_result(n, arr, k) # Вычисляем результат results.append(result) # Добавляем результат в список
print("\n".join(map(str, results))) # Печатаем результаты всех тестов
def calculate_result(n, arr, k):
# Суммируем положительные значения
total_sum = sum(value for value in arr if value > 0)
zero_segment_count = 0
in_zero_segment = False # Указывает, находимся ли в сегменте из нулей
for value in arr:
if value <= 0: # Если значение ноль или отрицательное
if not in_zero_segment: # Мы не в сегменте из нулей
zero_segment_count += 1 # Увеличиваем сегмент
in_zero_segment = True
else:
in_zero_segment = False # Если положительное значение, сбрасываем
# Итоговое значение: сумма положительных значений + (количество сегментов * k)
result = (total_sum + zero_segment_count * k) % (10**9 + 7)
return result # Вернем результат
def main():
t = int(input()) # Количество тестов
results = []
for _ in range(t):
n = int(input()) # Считываем количество элементов в тесте
arr = []
for _ in range(n):
sign, p = input().split() # Считываем знак и значение
p = int(p)
value = (1 << p) if sign == '+' else -(1 << p) # Преобразуем в соответствующее значение
arr.append(value) # Добавляем в массив
sign_k, p_k = input().split() # Считываем k
k = (1 << int(p_k)) if sign_k == '+' else -(1 << int(p_k))
result = calculate_result(n, arr, k) # Вычисляем результат
results.append(result) # Добавляем результат в список
print("\n".join(map(str, results))) # Печатаем результаты всех тестов
if __name__ == "__main__":
main()