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

На трёх путях сортировочной станции стоят вагоны с абрикосами (А), бананами (Б) и вишней (В) так, как это показано на рисунке.

Машинист тепловоза (Т) может за один раз прицепить к тепловозу один или несколько вагонов с какого-нибудь пути, передвинуть их на правый путь, после чего передвинуть их на любой левый путь. Например, если тепловоз заберет 2 вагона с пути номер 3 на путь номер 1, то после такого действия распределение вагонов по путям будет таким.

А В Б А В
Б В А
Б
Соответствующую команду перемещения будем записывать так.

2 3 1
Что означает, что необходимо передвинуть 2 вагона с пути номер 3 на путь номер 1. Первое число обозначает количество перемещаемых вагонов, второе число – номер пути, с которого нужно забрать вагоны, третье число – номер пути, на который нужно передвинуть вагоны.

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

Например, следующая запись:

2 3 1
1 2 3
означает «передвинуть 2 вагона с пути 3 на путь 1, затем передвинуть 1 вагон с пути 2 на путь 3».

Показать ответ
Ответ:
ancelina1234
ancelina1234
09.03.2022 21:20

#include <bits/stdc++.h>

using namespace std;

int main(){

       ios_base::sync_with_stdio(0);

       cin.tie(0);cout.tie(0);

       int N,k;

       int a[1000000];

       map <pair <int, int>, int> mem;

       cin >> N;

       //b.reserve(N);

       memset(a,0,sizeof a);

       //memset(b,0,b.size()*sizeof int);

       for (int i=0;i<N;i++)

               cin >> a[i];

       cin >> k;

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

       int tmp,tmp2,tmp3,tmp4,sum{0};

       cin >> tmp >> tmp2;

       tmp--;tmp2--;

       if (mem.find({tmp,tmp2})!=mem.end()) {cout<< mem[ {tmp,tmp2} ] << endl; continue;}

       tmp3=tmp;

       tmp4=tmp2;

       for(int x=0;x<(tmp4-tmp3)/2+1;x++){

       for(int z=0;z<(tmp2-tmp)/2+1;z++){

       if (mem.find({tmp,tmp2})!=mem.end()) {sum= (sum+mem[ {tmp,tmp2} ])%998244353; break;}

       for(int j=tmp+z;j<=tmp2-z;j++){

       sum=(sum+a[j])%998244353;

       }}

       tmp++;tmp2--;

       }

       cout << sum << endl;

       mem[{tmp3,tmp4}]=sum;

       }

       return 0;

}

Объяснение:

0,0(0 оценок)
Ответ:
MoDnIk237
MoDnIk237
14.07.2022 14:54

1.

#include <iostream>

#define N 10

int main()

{

using namespace std;

int count = 0, sum = 0, mult = 1;

int arr[N]{0, 7, 5, 2, -10, -3, 4, 6, 12, -1};

for (const auto i : arr)

{

 if (i < 0)

 {

  count++;

  sum += i;

  mult *= i;

 }

}

cout << "Count = " << count << "\nSum = " << sum

<< "\nMult = " << mult;

return 0;

}

2.

#include <iostream>

#define N 3

int main()

{

using namespace std;

int count = 0, sum = 0, mult = 1;

int arr[N][N]{0, 7, 5, 2, -10, -3, 4, 6, -1};

for (int i = 0; i < N; i++)

{

 for (int j = 0; j < N; j++)

 {

  if (arr[i][j] < 0)

  {

   count++;

   sum += arr[i][j];

   mult *= arr[i][j];

  }

 }

}

cout << "Count = " << count << "\nSum = " << sum

<< "\nMult = " << mult;

return 0;

}

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