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();
}
      

Download