Problem:
Score : 200 points

Problem Statement

A shop sells N kinds of fruits, Fruit 1, \ldots, N, at prices of p_1, \ldots, p_N yen per item, respectively. (Yen is the currency of Japan.)

Here, we will choose K kinds of fruits and buy one of each chosen kind. Find the minimum possible total price of those fruits.

Constraints

1 \leq K \leq N \leq 1000

1 \leq p_i \leq 1000

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N K
p_1 p_2 \ldots p_N

Output

Print an integer representing the minimum possible total price of fruits.

Sample Input 1

5 3
50 100 80 120 80

Sample Output 1

210

This shop sells Fruit 1, 2, 3, 4, and 5 for 50 yen, 100 yen, 80 yen, 120 yen, and 80 yen, respectively.

The minimum total price for three kinds of fruits is 50 + 80 + 80 = 210 yen when choosing Fruit 1, 3, and 5.

Sample Input 2

1 1
1000

Sample Output 2

1000

Solution in C# (.NET Core 3.1.201) (judge verdict: Accepted)

using System;
using System.Collections;
using System.Collections.Generic;

class Program {
    static void Main (string[] args) {
        string[] strtemp1 = Console.ReadLine ().Split (' ');
        int N = int.Parse (strtemp1[0]);
        int K = int.Parse (strtemp1[1]);
        string[] strtemp2 = Console.ReadLine ().Split (' ');
        var prices = new int[N];
        for (int i = 0; i < N; i++) {
            prices[i] = int.Parse (strtemp2[i]);
        }
        QuickSortS2B (prices);
        int total = 0;
        for (int i = 0; i < K; i++) {
            total += prices[i];
        }
        Console.WriteLine (total);
    }

    static void QuickSortS2B (int[] a) {
        QuickSortS2B (a, 0, a.Length - 1);
    }

    static void QuickSortS2B (int[] a, int left, int right) {
        if (left < right) {
            int i = left;
            int j = right;
            int tmp;
            int pivot = med3 (a[i], a[i + (j - i) / 2], a[j]);
            while (true) {
                while (a[i] < pivot) i++;
                while (pivot < a[j]) j--;
                if (i >= j) break;
                tmp = a[i];
                a[i] = a[j];
                a[j] = tmp;
                i++;
                j--;
            }
            QuickSortS2B (a, left, i - 1);
            QuickSortS2B (a, j + 1, right);
        }
    }

    static int med3 (int x, int y, int z) {
        if (x < y) {
            if (y < z) {
                return y;
            } else if (z < x) {
                return x;
            } else {
                return z;
            }
        } else {
            if (z < y) {
                return y;
            } else if (x < z) {
                return x;
            } else {
                return z;
            }
        }
    }
}

//dotnet run --project test