serbakovm888
30.05.2023 10:58

Куча - Выбрать Минимум Напишите программу, которая будет обрабатывать последовательность запросов таких видов:

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

Выходные данные
125
321
7
555
CANNOT

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
DimanGuy32
22.09.2020 03:56
// PascalABC.NET 3.1, сборка 1214 от 09.04.2016
procedure ex1(a:array of integer; var nn,np:integer);
begin
  nn:=0; np:=0;
  for var i:=0 to a.Length-1 do
    if a[i]<0 then begin a[i]:=0; Inc(nn) end
    else
      if a[i]>0 then begin a[i]:=1; Inc(np) end
end;

begin
  var a:=ArrRandom(ReadInteger('n='),-20,20);
  a.Println;
  var kp,kn:integer;
  ex1(a,kn,kp);
  Writeln('Отрицательных ',kn,', положительных ',kp);
  a.Println
end.

Тестовое решение:
n= 15
-5 4 -10 15 12 -17 12 4 0 8 -2 -9 8 6 4
Отрицательных 5, положительных 9
0 1 0 1 1 0 1 1 0 1 0 0 1 1 1

// PascalABC.NET 3.1, сборка 1214 от 09.04.2016
procedure ex2(a:array of integer);
begin
  var k:=0;
  for var i:=0 to a.Length-1 do
    if a[i]>0 then begin Print(i+1); Inc(k) end;
  Writeln(NewLine,'Количество положительных элементов равно ',k)
end;

begin
  var a:=ArrRandom(ReadInteger('n='),-20,20);
  a.Println;
  ex2(a);
end.

Тестовое решение:
n= 13
15 -3 1 11 -20 17 -17 -12 -12 20 11 2 20
1 3 4 6 10 11 12 13
Количество положительных элементов равно 8

// PascalABC.NET 3.1, сборка 1214 от 09.04.2016
procedure ex3(a:array of integer);
begin
  var s:=0;
  var k:=0;
  var i:=0;
  while i<a.Length do begin
    s+=abs(a[i]); Inc(k); i+=2
    end;
  Writeln('Сумма модулей нечетных элементов равна ',s);
  Writeln('Их среднее арифметическое равно ',s/k)
end;

begin
  var a:=ArrRandom(ReadInteger('n='),-20,20);
  a.Println;
  ex3(a);
end.

Тестовое решение:
n= 10
2 -1 -14 -12 11 13 1 17 20 6
Сумма модулей нечетных элементов равна 48
Их среднее арифметическое равно 9.6
0,0(0 оценок)
Ответ:
qppqwoow
12.04.2020 17:22
Рассмотрим первое уравнение. В этом уравнении имеется импликация, которая принимает значение 0 для набора исходных значений 1 и 0. Значит, если x[i]=1, то для всех j>=i в решениях этого уравнения должно быть x[j]=1.
Из данных рассуждений следует, что решениями первого уравнения будут (значения переменных перечислены в порядке x1, x2, x3, x4):
  0000, 0001, 0011, 0111, 1111 (всего 5 наборов)
Чтобы убедиться в этом можно также сделать таблицу истинности для первого уравнения (она должна содержать 2^4=16 строк).
 Очевидно, что второе и третье уравнение имеют по 5 аналогичных решений.
Обозначим наборы значений переменных x, y и z соответственно X, Y и Z.
Решением системы в этом случае будут наборы {X, Y, Z}, причем, учитывая 4-е уравнение, в состав этих наборов обязательно должен входить хотя бы один набор 0000.
Пересчитываем все наборы:
{0000, Y, Z}
- так как для Yи Z имеется по 5 наборов, то получаем 25 решений (например, 1-й: 0000 0000 0000, 2-й: 0000 0000 0001 и т.д.)
{X, 0000, Z}
- для X и Z имеется, как уже показано, тоже по 5 наборов решений, но для исключения дублирования набор X=0000 исключаем из рассмотрения, значит, здесь будет 4*5 = 20 решений
{X, Y, 0000}
- рассуждая аналогичным образом (т.е. исключая дубликаты), получаем, что здесь добавляется ещё 4*4=16 решений.
Итого: 25+20+16=61 набор.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота