Problem:
Score : 200 points

Problem Statement

Snuke has N sticks.
The length of the i-th stick is l_i.

Snuke is making a snake toy by joining K of the sticks together.

The length of the toy is represented by the sum of the individual sticks that compose it.
Find the maximum possible length of the toy.

Constraints

1 \leq K \leq N \leq 50

1 \leq l_i \leq 50

l_i is an integer.

Input

Input is given from Standard Input in the following format:

N K
l_1 l_2 l_3 ... l_{N}

Output

Print the answer.

Sample Input 1

5 3
1 2 3 4 5

Sample Output 1

12

You can make a toy of length 12 by joining the sticks of lengths 3, 4 and 5, which is the maximum possible length.

Sample Input 2

15 14
50 26 27 21 41 7 42 35 7 5 5 36 39 1 45

Sample Output 2

386

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

#include <stdio.h>

	int L[1] = {0};
	int a[49] = {0};
    int partition(int l, int r) {
        int i = l - 1;
        int j = r;
        int temp;
     
        int pivot = a[r];
     
        while (1) {
            i++;
            while (a[i] < pivot) {
                i++;
            }
            j--;
            while (i < j && pivot < a[j]) {
                j--;
            }
         
            if (i >= j) {
                break;
            }
     
            temp = a[i];
            a[i] = a[j];
            a[j] = temp;
        }
        temp = a[i];
        a[i] = a[r];
        a[r] = temp;
        return i;
    }
     
    void quickSort(int l, int r) {
        int v;
        if (l >= r) {
            return;
        }
        v = partition(l, r);
        quickSort(l, v - 1);
        quickSort(v + 1, r);
    }

int main(void){
	scanf("%d", &L[0]);
	scanf("%d", &L[1]);
	for (int n = 0;n < L[0];n++){ 
		scanf("%d", &a[n]);
	}
    quickSort(0, L[0]-1);
	int num = L[0] - L[1];
	int snake = 0;
	for(num+1; num < L[0]; num++){
		snake = snake + a[num];
	}
	printf("%d\n", snake);
}