Куча - Выбрать Максимум Напишите программу, которая будет обрабатывать последовательность запросов таких видов:
CLEAR — сделать пирамиду пустой (если в пирамиде уже были какие-то элементы, удалить все). Действие происходит только с данными в памяти, на экран ничего не выводится.
ADD n — добавить в пирамиду число n. Действие происходит только с данными в памяти, на экран ничего не выводится.
EXTRACT — вынуть из пирамиды максимальное значение. Следует и изменить данные в памяти, и вывести на экран или найденное максимальное значение, или, если пирамида была пустой, слово "CANNOT" (большими буквами).
Входные данные
Во входных данных записано произвольную последовательность запросов CLEAR, ADD и EXTRACT — каждый в отдельной строке, согласно вышеописанному формату.
Суммарное количество всех запросов не превышает 200000.
Выходные данные
Для каждого запроса типа EXTRACT выведите на стандартный выход (экран) его результат (в отдельной строке).
Примеры
Входные данные
ADD 192168812
ADD 125
ADD 321
EXTRACT
EXTRACT
CLEAR
ADD 7
ADD 555
EXTRACT
EXTRACT
EXTRACT
Выходные данные
192168812
321
555
7
CANNOT
Private Sub CommandButton1_Click()
Dim s As Integer, z As Integer
Dim t As String
t = "Для оплате в кассе необходимы:"
s = CInt(InputBox("Введите сумму оплаты"))
Do While s > 0
If s >= 500 Then
s = s - 500: k = k + 1
ElseIf s >= 200 Then
s = s - 200: m = m + 1
ElseIf s >= 100 Then
s = s - 100: n = n + 1
ElseIf s >= 50 Then
s = s - 50: z = z + 1
ElseIf s >= 10 Then
s = s - 10: v = v + 1
ElseIf s >= 5 Then
s = s - 5: h = h + 1
ElseIf s >= 2 Then
s = s - 2: f = f + 1
ElseIf s >= 1 Then
s = s - 1: d = d + 1
End If
Loop
If k > 0 Then
t = t + " " & k & " по 500 рублей, "
t = t + " " & m & " по 200 рублей, "
t = t + " " & n & " по 100 рублей, "
t = t + " " & z & " по 50 рублей, "
t = t + " " & v & " по 10 рублей, "
t = t + " " & h & " по 5 рублей, "
t = t + " " & f & " по 2 рублей, "
t = t + " " & d & " по 1 рублей, "
Cells(10, 1) = t
End If
End Sub
Произведём замену: y1 = x1 ≡ x2; y2 = x3 ≡ x4; y3 = x5 ≡ x6; y4 = x7 ≡ x8. Получим уравнение:
(y1 → y2) ∧ (y2 → y3) ∧ (y3 → y4) = 1.
Логическое И истинно, только тогда, когда истины все утверждения, поэтому данное уравнение эквивалентно системе уравнений:
Импликация ложна только в случае, если из истинного следует ложное. Данная система уравнений описывает ряд переменных {y1, y2, y3, y4}. Заметим, что если любую переменную из этого ряда приравнять 1, то все следующие должны также быть равны 1. То есть решения системы уравнений: 0000; 0001; 0011; 0111; 1111.
Уравнения вида xN ≡ x{N+1} = 0 имеют два решения, уравнения вида xN ≡ x{N+1} = 1 также имеет два решения.
Найдём сколько наборов переменных x соответствуют каждому из решений y.
Каждому из решений 0000; 0001; 0011; 0111; 1111 соответствует 2 · 2 · 2 · 2 = 16 решений. Всего 16 · 5 = 80 решений.
ответ: 80.