原题参见COGS
这题,好多种解法呢。然而我一直觉得冒泡才是最优美的写法//大雾。
顺带练了一发对拍。。。
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int n, num[10005];
long long ans;
void swap2(int &a, int &b) {
int t =a;
a = b;
b = t;
}
int get_num() {
int ans = 0;
char tmp;
tmp = getchar();
while (tmp > '9' || tmp < '0') tmp = getchar();
while (tmp >= '0' && tmp <= '9') {
ans = ans * 10 + tmp - 48;
tmp = getchar();
}
return ans;
}
void he(int &a, int &b) {
b += a;
a = 0;
}
void buble(int cnt) {
int i = cnt;
while (num[i] > num[i + 1] && i < n) {
swap2(num[i], num[i + 1]);
i++;
}
}
int main() {
freopen("fruit.in", "r", stdin);
freopen("fruit.out", "w", stdout);
cin >> n;
for (int i = 1; i <= n; i++) {
num[i] = get_num();
}
sort (num + 1, num + n + 1);
for (int i = 1; i < n; i++) {
he(num[i], num[i+1]);
ans += num[i+1];
buble(i + 1);
}
cout << ans << endl;
return 0;
}