INSUL - Cách nhiệt
Tác giả: hieult
Ngôn ngữ: C++
#include <stdio.h>
//#include <conio.h>
int partition(int array[], int top, int bottom);
void QuickSort(int num[], int top, int bottom)
{
int middle;
if (top < bottom)
{
middle = partition(num, top, bottom);
QuickSort(num, top, middle);
QuickSort(num, middle+1, bottom);
}
return;
}
int partition(int array[], int top, int bottom)
{
int x = array[top];
int i = top - 1;
int j = bottom + 1;
int temp;
do
{
do
{
j --;
}while (x >array[j]);
do
{
i++;
} while (x <array[i]);
if (i < j)
{
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}while (i < j);
return j;
}
int main()
{
int n,a[100001];long long KQ = 0;
scanf("%d",&n);
for(int i = 1;i<=n;i++)
{
scanf("%d",&a[i]);
KQ = KQ + a[i];
}
QuickSort(a,1,n);
for(int i = 1;i<=n/2;i++)
KQ = KQ + a[i]-a[n+1-i];
printf("%lld\n",KQ);
//getch();
}