tatarincevai
04.01.2021 06:03

Киньте в личку Задача №1698. Гомо или гетеро? умоляю пАмАгИтЕ Максимальное время работы на одном тесте:

3 секунды

Максимальный объем используемой памяти:

256 мегабайт

Определим две операции над списком целых чисел:

insert number – добавляет заданное число в конец списка

delete number – удаляет первое вхождение заданного числа из списка. Если список не содержит заданного числа, то ничего не меняется.

Например, результатом добавления числа 4 в список [1, 2, 1] будет список [1, 2, 1, 4]. Если мы удалим число 1 из этого списка, то получим список [2, 1, 4], но если мы попытаемся удалить число 3 из списка [1, 2, 1, 4], то список останется неизменным.

Список называется гомогенным, если он содержит хоты бы два одинаковых числа и гетерогенным, если содержит хотя бы два различных числа. Например, список [2, 2] является гомогенным, список [2, 1, 4] – гетерогенным, список [1, 2, 1, 4] – одновременно и тем и другим, а пустой список не является ни гомогенным, ни гетерогенным.

Напишите программу, которая по последовательности операций добавления и удаления в пустой список, определяет после каждой из операций, является ли список гомогенным или гетерогенным.

Формат входных данных

Первая строка содержит целое число n – количество операций (1 ≤ n ≤ 100 000).

Следующие n строк содержат описания операций. Каждая операция описывается словом “insert” или “delete” и числом k – аргументом операции (-109 ≤ k ≤ 109).

Формат выходных данных

Для каждой операции выведите строку, содержащую единственное слово, описывающее состояние списка после этой операции:

“both” - если список одновременно является и тем и другим

“hetero” - если список является гетерогенным

“homo” - если список является гомогенным

“neither” - если список не принадлежит ни одному типу.

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
Staslu
09.11.2020 15:58
{Автор:       Рудницкий В. Л.
Ограничения: Последовательность не может быть длинее NN.
Откуда:      Олимпиада, KZ, 2016.}
const  NN = 10000;
var  a  : array [1 .. NN] of integer;  i, j, d, N: integer;
begin
  write('Введите длину массива: '); readln(N);
  writeln('Введите массив чисел через пробел:');
  for i := 1 to N do    read( a[i] );
  { Удаляем повторы чисел }
  for i := 1 to N-1 do
    for j := i+1 to N do
      if a[i] = a[j] then a[j] := 0;
  { Создаем последовательность заполняя не нужные числа нулями }
  for i := 2 to N do    if ( a[i-1] > a[i] ) and ( a[i] <> 0 ) then a[i] := 0;
  { Суммируем не нулевые элементы }
  d := 0;  for i := 1 to N do    if a[i] <> 0 then d := d + 1;
  writeln('Максимальная длинна массива после удалений: ',d);
end.
0,0(0 оценок)
Ответ:
ilyawifiilyap00qfm
16.06.2022 01:03
Я бы сделал так:
Загоняем все 5 чисел в массив. Делаем сортировку. В итоге получаем, что в массиве в интервале massiv[0]..massiv[3] будут лежать минимальные числа. Берем их, суммируем, получаем минимально возможную сумму.
Аналогично и с максимальной, только суммировать будем с massiv[1]..massiv[4].

Код будет примерно такой:
int max_possible_sum(char *massiv[5]){
     for (int i = 1; i <5; ++i) {
           int sum += massiv[i];
     }
return sum;
}

Аналогично и для самой малой суммы: 
int min_possible_sum(char *massiv[5]){
     for (int i = 0; i <4; ++i) {
           int sum += massiv[i];
     }
return sum;
}
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота