原题参见COGS
这题,好多种解法呢。然而我一直觉得冒泡才是最优美的写法//大雾。
顺带练了一发对拍。。。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
#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; } |