Problem:
Score : 200 points

Problem Statement

Snuke is having a barbeque party.

At the party, he will make N servings of Skewer Meal.

Example of a serving of Skewer Meal

He has a stock of 2N skewers, all of which will be used in Skewer Meal. The length of the i-th skewer is L_i.
Also, he has an infinite supply of ingredients.

To make a serving of Skewer Meal, he picks 2 skewers and threads ingredients onto those skewers.
Let the length of the shorter skewer be x, then the serving can hold the maximum of x ingredients.

What is the maximum total number of ingredients that his N servings of Skewer Meal can hold, if he uses the skewers optimally?

Constraints

1≦N≦100

1≦L_i≦100

For each i, L_i is an integer.

Input

The input is given from Standard Input in the following format:

N
L_1 L_2 ... L_{2N}

Output

Print the maximum total number of ingredients that Snuke's N servings of Skewer Meal can hold.

Sample Input 1

2
1 3 1 2

Sample Output 1

3

If he makes a serving using the first and third skewers, and another using the second and fourth skewers, each serving will hold 1 and 2 ingredients, for the total of 3.

Sample Input 2

5
100 1 2 3 14 15 58 58 58 29

Sample Output 2

135

Solution in C (GCC 5.4.1) (judge verdict: Accepted)

#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void){
    int N;
    int i,j;
    int count=0;
    int stackcount=0;
    int buf;
    int piv=0;
    int delnum=0;
    char str[1000];
    int *stack;
    int *newstack;
    int ans=0;
    
    scanf("%d\n",&N);
    stack=malloc(sizeof(int)*2*N);
    newstack=malloc(sizeof(int)*2*N);
    for (i=0;i<1000;i++){
        str[i]='\0';
    }
    for (i=0;i<2*N;i++){
        stack[i]=0;
    }
    
    scanf("%[^\n]",str);
    for (i=0;i<1000;i++){
        if((str[i]!=' ')&&(str[i]!='\0')){
            count++;
        }
        else{
            for(j=0;j<count;j++){
                stack[stackcount]+=(str[i-j-1]-48)*pow(10,j);
            }
            stackcount++;
            count=0;
        }
        if(str[i]=='\0') break;
    }
    for(i=0;i<2*N;i++){
        for(j=0;j<2*N;j++){
            if(stack[j]>=piv){
                piv=stack[j];
                delnum=j;
            }
        }
        newstack[i]=piv;
        stack[delnum]=0;
        piv=0;
    }
    for(i=0;i<N;i++){
        ans+=newstack[2*i+1];
    }
    printf("%d\n",ans);
}