
#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 + 1 = 2
В = А + Б + Г = 4
Е = В = 4
Ж = В + Е = 4 + 4 = 8
З = 0 (поскольку в З не ведёт ни одна дорога из В)
И = Е + Ж = 4 + 8 = 12
К = Л = И =12
М = К + И + Л = 36
Примечание. Необходимо найти количество различных путей из города А в город М, проходящих через город В.
ответ: 36.