Selik1234
17.04.2020 07:42

написать задачу на С++
К тупику со стороны пути 1 (см. рисунок) подъехал поезд. Разрешается отцепить от поезда один или сразу несколько первых вагонов и завезти их в тупик (при желании, можно даже завезти в тупик сразу весь поезд). После этого часть из этих вагонов вывезти в сторону пути 2. После этого можно завезти в тупик еще несколько вагонов и снова часть оказавшихся вагонов вывезти в сторону пути 2. И так далее (так, что каждый вагон может лишь один раз заехать с пути 1 в тупик, а затем один раз выехать из тупика на путь 2). Заезжать в тупик с пути 2 или выезжать из тупика на путь 1 запрещается. Нельзя с пути 1 попасть на путь 2, не заезжая в тупик.

Известно, в каком порядке изначально идут вагоны поезда. Требуется с указанных операций сделать так, чтобы вагоны поезда шли по порядку (сначала первый, потом второй и т.д., считая от головы поезда, едущего по пути 2 в сторону от тупика).

Входные данные
Вводится число N — количество вагонов в поезде (1≤N≤2000). Дальше идут номера вагонов в порядке от головы поезда, едущего по пути 1 в сторону тупика. Вагоны пронумерованы натуральными числами от 1 до N, каждое из которых встречается ровно один раз.

Выходные данные
Если сделать так, чтобы вагоны шли в порядке от 1 до N, считая от головы поезда, когда поезд поедет по пути 2 из тупика, можно, выведите действия, которые нужно проделать с поездом. Каждое действие описывается двумя числами: типом и количеством вагонов:

если нужно завезти с пути 1 в тупик K вагонов, должно быть выведено сначала число 1, а затем — число K (K≥1),
если нужно вывезти из тупика на путь 2 K вагонов, должно быть выведено сначала число 2, а затем — число K (K≥1).
Если возможно несколько последовательностей действий, приводящих к нужному результату, выведите любую из них.

Если выстроить вагоны по порядку невозможно, выведите одно число 0.

Выберу лучший ответ! заранее

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
FaceSwapLive
22.12.2021 14:23

Условие пытается немного обмануть решающего. На самом деле всегда можно выбрать Рахманов ломтик строки, состоящий из одного символа (действительно, если в искомой подстроке несколько символов, то каждый из них встречается не меньшее число раз, что и сама подстрока). В итоге задача превращается в тривиальную: считать строку и вывести символ, встречающийся максимальное число раз.

#include <iostream>


int main() {

   char c, maxchar;

   int count[26] = {0}, maxcount = 0;

   while (std::cin.get(c)) {

       count[c - 'a']++;

   }

   for (c = 0; c < 26; c++) {

       if (count[c] > maxcount) {

           maxcount = count[c];

           maxchar = c;

       }

   }

   std::cout << static_cast<char>(maxchar + 'a');

   return 0;

}

0,0(0 оценок)
Ответ:
vany4189
04.04.2023 10:26
Летающий автобус)
1. Мест в эконом-классе 120, а в бизнес-классе 40.
2. 100 процентов прибыли получим, если заполним все места. Билет в эконом-классе стоит в 2 раза меньше чем X. Получаем следующее уравнение:
40*X + 0.5*120*X = 100%, X = 1% от всей прибыли.  Значит один билет в бизнес - классе приносит один процент прибыли. А один билет в эконом-классе приносит 0.5 процента прибыли.
3. Осталось рассчитать прибыль компании учитывая непроданные билеты:
P = 100 - b - 0.5*a  и написать программу:

var a,b:integer;
begin
  repeat
    writeln('Введите количество непроданных билетов (a,b)');
    readln(a,b);
  until (a<=120) and (b<=40)and (a>=0) and (b>=0);
  writeln('Прибыль компании составит ',100-b-0.5*a,'%');
end.

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