В
Все
Б
Биология
Б
Беларуская мова
У
Українська мова
А
Алгебра
Р
Русский язык
О
ОБЖ
И
История
Ф
Физика
Қ
Қазақ тiлi
О
Окружающий мир
Э
Экономика
Н
Немецкий язык
Х
Химия
П
Право
П
Психология
Д
Другие предметы
Л
Литература
Г
География
Ф
Французский язык
М
Математика
М
Музыка
А
Английский язык
М
МХК
У
Українська література
И
Информатика
О
Обществознание
Г
Геометрия
PоLinaKozloVa
PоLinaKozloVa
27.04.2023 05:46 •  Информатика

Для школьного праздника группа учащихся решила поставить танец, в котором иллюстрировалась бы работа алгоритма сортировки пузырьком. В этом танце учащиеся становятся в одну линию, после этого некоторые стоящие рядом танцоры могут меняться местами. Одновременные обмены запрещены, то есть пока одна пара танцоров меняется местами, другие остаются на своих местах. В конце танца все девочки должны стоять в ряду слева, а все мальчики — справа. По данному первоначальному расположению мальчиков и девочек в ряду определите, какое минимальное число обменов им необходимо совершить, чтобы встать нужным образом.

Например, пусть первоначальная расстановка танцоров такая (буква «Д» обозначает девочку, буква «М» обозначает мальчика):

МДДМД
Тогда им необходимо выполнить 4 обмена. Запишем расстановку после каждого обмена, выделив жирным шрифтом пару, которая поменялась местами.

ДМДМД
ДМДДМ
ДДМДМ
ДДДММ
В этой задаче вам необходимо определить минимальное число обменов для следующих пяти первоначальных расстановок:

МДММДМД




Во второй расстановке сначала стоит 7 мальчиков, потом 8 девочек.

В третьей расстановке стоит 10 мальчиков, 10 девочек, 10 мальчиков, 10 девочек, 10 мальчиков, 10 девочек. Всего 60 танцоров.

В четвёртой расстановке 1 мальчик, 1 девочка, 2 мальчика, 2 девочки, 3 мальчика, 3 девочки, 4 мальчика, 4 девочки, 5 мальчиков, 5 девочек, 6 мальчиков, 6 девочек. Всего 42 танцора.

В пятой расстановке мальчики и девочки чередуются, всего 80 танцоров.

ответом на эту задачу является пять целых чисел, записанных в пяти отдельных строках, по одному числу в строке. ответы на расстановки должны быть записаны в том же порядке, в котором они приведены в условии. Если вы не можете найти ответ для какой-то расстановки, напишите в качестве ответа любое число.

Показать ответ
Ответ:
fox590
fox590
28.02.2021 02:36

#include <iostream>

using namespace std;

int main() {

int a[100], n;

cin >> n;

for (int i = 0; i < n; i++) {

 cin >> a[i];

}

//сюда код свой

int min_elem_ind = 0;

int min_elem_val = a[0];

 for (int i = 1; i < n; i++) {

  if (min_elem_val > a[i]) {

   min_elem_val = a[i];

   min_elem_ind = i;

  }

 }

int max_elem_ind = 0;

int max_elem_val = a[0];

 for (int i = 1; i < n; i++) {

  if (max_elem_val < a[i]) {

   max_elem_val = a[i];

   max_elem_ind = i;

  }

 }

 if (max_elem_ind > min_elem_ind) {

  cout << "Min" << endl;

 }

 if (max_elem_ind < min_elem_ind) {

  cout << "Max" << endl;

 }

 else {

  cout << "Error" << endl;

 }

return 0;

}

0,0(0 оценок)
Ответ:
Levickay991
Levickay991
28.12.2020 09:02

Здесь ничего не написано про случай, если максимум = минимуму, поэтому его не учитываем.

Идея программы: просто ищем индекс первого максимального и первого минимального, а затем сравниваем их

Фрагмент кода:

int max = a[0], min = a[0];

int i_max = 0, i_min = 0;

for (int i = 1; i < n; i++) {

 if (a[i] > max) {  

  max = a[i];

  i_max = i;

 }

 if (a[i] < min) {

  min = a[i];

  i_min = min;

 }

}

if (i_max > i_min)

 cout << "MAX";

else if (i_min > i_max)

 cout << "MIN";

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота