учитель задал домашку тупую
помогите решить на 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" и так неубывающий
Ответы
Ответ дал:
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'а
Вас заинтересует
1 год назад
1 год назад
1 год назад
1 год назад
8 лет назад