• Предмет: Информатика
  • Автор: temirlanyedillion
  • Вопрос задан 1 год назад

учитель задал домашку тупую

помогите решить на c++

есть массив чисел длиной n: a_1, a_2, a_3, a_4, .... , a_n

мы хотим отсортировать массив в порядке не убывания

по следующему принципу: мы выбираем два соседних числа и меняем местами

а за это платим удвоенную разность чисел которые меняем местами

нужно вывести цену которую мы в итоге получим

Ввод

3

1 2 3

Вывод

8

В примере сначала числа 1 и 2 поменяются местами (потребуется 2 монеты ),

затем числа 1 и 3 (разница равна 2, суммарно плюс 4 монеты), и последним будет замена

2 и 3 (ещё 2 монеты).


Аноним: в порядке невозрастания, наверное, потому что иначе в приведенном примере ответ был бы 0, а не 8, так как "1 2 3" и так неубывающий
temirlanyedillion: да, спасибо, случайно)

Ответы

Ответ дал: Аноним
1

#include <iostream>

using namespace std;

void swap(int *a, int *b){

   int temp = *a;

   *a = *b;

   *b = temp;

}

signed main() {

   int ans = 0;

   int n;

   cin >> n;

   int arr[n];

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

       cin >> arr[i];

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

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

           if (arr[j] < arr[j+1]){

               swap(&arr[j], &arr[j+1]);

               ans += (arr[j] - arr[j+1])*2;

           }

       }

   }

   cout << ans;

}

P.S: задачка не тупая, хороший вариант для понимания bubble sort'а


temirlanyedillion: вааау спасибо большое
Вас заинтересует