#include #include #include using namespace std; int partition(vector &a, const int l, const int r) { int i = l + 1, j = r; while (i <= j) { if (a[i] > a[l]) { i++; } else if (a[j] < a[l]) { j--; } else { swap(a[i++], a[j--]); } } swap(a[l], a[j]); return j; } int quickselect(vector &a, const int k) { int l = 0, r = a.size() - 1; while (l <= r) { int p = partition(a, l, r); if (p < k) { l = p + 1; } else if (p > k) { r = p - 1; } else { int sum = 0; for (int i = 0; i < k; i++) { sum += a[i]; } return sum; } } assert(false); return 0; } int main(void) { int n; cin >> n; int k; cin >> k; vector a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } cout << quickselect(a, k) << endl; return 0; }