Given an array **arr[]** of size **N** and an integer **K** (**N % K = 0**), the task is to split array into subarrays of size **K** such that the sum of **2 ^{nd}** smallest elements of each subarray is the minimum possible.

**Examples:**

Input:arr[]={11, 20, 5, 7, 8, 14, 2, 17, 16, 10}, K = 5Output:13Explanation:Splitting array into subsets {11, 5, 14, 2, 10} and {20, 7, 8, 17, 16} generates minimum sum of second smallest elements( = 5 + 8 = 13).

Input:arr[] = {13, 19, 20, 5, 17, 11, 10, 8, 23, 14}, K = 5Output:19Explanation:Splitting array into subsets {10, 19, 20, 11, 23} and {17, 5, 8, 13, 14} generates minimum sum of second smallest elements(= 11 + 8 = 19).

**Approach: **The problem can be solved by sorting technique. Follow the steps below to solve this problem:

- Sort the given array in ascending order.
- Since all subsets are of length
**K**groups, choose first**K**odd-indexed elements starting from**1**and calculate their sum. - Print the obtained sum.

Below is the implementation of the above approach:

## C++

`// C++ implementation for above approach ` ` ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` ` ` `// Function to find the minimum sum of ` `// 2nd smallest elements of each subset ` `int` `findMinimum(` `int` `arr[], ` `int` `N, ` `int` `K) ` `{ ` ` ` `// Sort the array ` ` ` `sort(arr, arr + N); ` ` ` ` ` `// Stores minimum sum of second ` ` ` `// elements of each subset ` ` ` `int` `ans = 0; ` ` ` ` ` `// Traverse first K 2nd smallest elements ` ` ` `for` `(` `int` `i = 1; i < 2 * (N / K); i += 2) { ` ` ` ` ` `// Update their sum ` ` ` `ans += arr[i]; ` ` ` `} ` ` ` ` ` `// Print the sum ` ` ` `cout << ans; ` `} ` ` ` `// Driver Code ` `int` `main() ` `{ ` ` ` `// Given Array ` ` ` `int` `arr[] = { 11, 20, 5, 7, 8, ` ` ` `14, 2, 17, 16, 10 }; ` ` ` ` ` `// Given size of the array ` ` ` `int` `N = ` `sizeof` `(arr) ` ` ` `/ ` `sizeof` `(arr[0]); ` ` ` ` ` `// Given subset lengths ` ` ` `int` `K = 5; ` ` ` ` ` `findMinimum(arr, N, K); ` ` ` ` ` `return` `0; ` `}` |

*chevron_right*

*filter_none*

## Java

`// Java implementation for the above approach ` ` ` `import` `java.io.*; ` `import` `java.util.*; ` ` ` `class` `GFG { ` ` ` ` ` `// Function to find the minimum sum of ` ` ` `// 2nd smallest elements of each subset ` ` ` `public` `static` `void` `findMinimum( ` ` ` `int` `arr[], ` `int` `N, ` `int` `K) ` ` ` `{ ` ` ` `// Sort the array ` ` ` `Arrays.sort(arr); ` ` ` ` ` `// Stores minimum sum of second ` ` ` `// elements of each subset ` ` ` `int` `ans = ` `0` `; ` ` ` ` ` `// Traverse first K 2nd smallest elements ` ` ` `for` `(` `int` `i = ` `1` `; i < ` `2` `* (N / K); i += ` `2` `) { ` ` ` ` ` `// Update their sum ` ` ` `ans += arr[i]; ` ` ` `} ` ` ` ` ` `// Print the sum ` ` ` `System.out.println(ans); ` ` ` `} ` ` ` ` ` `// Driver Code ` ` ` `public` `static` `void` `main(String[] args) ` ` ` `{ ` ` ` `// Given Array ` ` ` `int` `[] arr = { ` `11` `, ` `20` `, ` `5` `, ` `7` `, ` `8` `, ` ` ` `14` `, ` `2` `, ` `17` `, ` `16` `, ` `10` `}; ` ` ` ` ` `// Given length of array ` ` ` `int` `N = arr.length; ` ` ` ` ` `// Given subset lengths ` ` ` `int` `K = ` `5` `; ` ` ` ` ` `findMinimum(arr, N, K); ` ` ` `} ` `}` |

*chevron_right*

*filter_none*

## Python3

`# Python3 implementation for above approach ` ` ` `# Function to find the minimum sum of ` `# 2nd smallest elements of each subset ` `def` `findMinimum(arr, N, K): ` ` ` ` ` `# Sort the array ` ` ` `arr ` `=` `sorted` `(arr) ` ` ` ` ` `# Stores minimum sum of second ` ` ` `# elements of each subset ` ` ` `ans ` `=` `0` ` ` ` ` `# Traverse first K 2nd smallest elements ` ` ` `for` `i ` `in` `range` `(` `1` `, ` `2` `*` `(N` `/` `/` `K), ` `2` `): ` ` ` ` ` `# Update their sum ` ` ` `ans ` `+` `=` `arr[i] ` ` ` ` ` `# Prthe sum ` ` ` `print` `(ans) ` ` ` `# Driver Code ` `if` `__name__ ` `=` `=` `'__main__'` `: ` ` ` ` ` `# Given Array ` ` ` `arr ` `=` `[` `11` `, ` `20` `, ` `5` `, ` `7` `, ` `8` `, ` `14` `, ` `2` `, ` `17` `, ` `16` `, ` `10` `] ` ` ` ` ` `# Given size of the array ` ` ` `N ` `=` `len` `(arr) ` ` ` ` ` `# Given subset lengths ` ` ` `K ` `=` `5` ` ` `findMinimum(arr, N, K) ` ` ` `# This code is contributed by mohit kumar 29` |

*chevron_right*

*filter_none*

## C#

`// C# implementation for above approach ` `using` `System; ` ` ` `class` `GFG{ ` ` ` `// Function to find the minimum sum of ` `// 2nd smallest elements of each subset ` `public` `static` `void` `findMinimum(` `int` `[] arr, ` `int` `N, ` ` ` `int` `K) ` `{ ` ` ` ` ` `// Sort the array ` ` ` `Array.Sort(arr); ` ` ` ` ` `// Stores minimum sum of second ` ` ` `// elements of each subset ` ` ` `int` `ans = 0; ` ` ` ` ` `// Traverse first K 2nd smallest elements ` ` ` `for` `(` `int` `i = 1; i < 2 * (N / K); i += 2) ` ` ` `{ ` ` ` ` ` `// Update their sum ` ` ` `ans += arr[i]; ` ` ` `} ` ` ` ` ` `// Print the sum ` ` ` `Console.WriteLine(ans); ` `} ` ` ` `// Driver Code ` `public` `static` `void` `Main() ` `{ ` ` ` ` ` `// Given Array ` ` ` `int` `[] arr = { 11, 20, 5, 7, 8, ` ` ` `14, 2, 17, 16, 10 }; ` ` ` ` ` `// Given length of array ` ` ` `int` `N = arr.Length; ` ` ` ` ` `// Given subset lengths ` ` ` `int` `K = 5; ` ` ` ` ` `findMinimum(arr, N, K); ` `} ` `} ` ` ` `// This code is contributed by susmitakundugoaldanga` |

*chevron_right*

*filter_none*

**Output:**

13

**Time Complexity:** O(NlogN)**Space Complexity:** O(N)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready.