为什么就10分?
查看原帖
为什么就10分?
339978
大白菜ac楼主2020/5/12 11:35
#include <iostream>
using namespace std;
int n;
int num[10005];
void Swap(int i, int j) {
	int t = num[i]; num[i] = num[j]; num[j] = t;
}

int Sort(int left, int right) {
	int i = left, j = right + 1;
	do {
		do i++; while (num[i] < num[left]);
		do j--; while (num[j] > num[left]);
		if (i < j)Swap(i, j);
	} while (i < j);
	Swap(left, j);
	return j;
}

void QuickSort(int left, int right) {
	if (left < right) {
		int mid = Sort(left, right);
		QuickSort(left, mid-1);
		QuickSort(mid + 1, right);
	}
}

int main() {
	cin >> n;
	long long sum = 0;
	for (int i = 0; i < n; i++)cin >> num[i];
	num[n] = 0x7fffffff;
	if (n == 1) { cout << sum; return 0; }
	QuickSort(0, n - 1);
	long long weight = num[0] + num[1];
	sum = weight;
	for (int i = 2; i < n; i++) {
		weight += num[i];
		sum = sum + weight;
	}
	cout << sum;
	return 0;
}
2020/5/12 11:35
加载中...