• Source
    1. #include <vector>
    2. #include <iostream>
    3. #include <queue>
    4.  
    5. std::vector<int> mink_v6(std::vector<int> array, int k) {
    6. std::priority_queue<int> pq(array.begin(), array.begin() + k);
    7. int size = array.size();
    8. for (int i = k; i < size; i++) {
    9. if (pq.top() > array[i]) {
    10. pq.pop();
    11. pq.push(array[i]);
    12. }
    13. }
    14. std::vector<int> result;
    15. for (int i = 0; i < k; i++) {
    16. result.push_back(pq.top());
    17. pq.pop();
    18. }
    19. return result;
    20. }
    21.  
    22. int main(void) {
    23. int n, k;
    24. std::vector<int> array;
    25. std::cout << "Introduceti numarul de elemente: ";
    26. std::cin >> n;
    27. std::cout << "Introduceti numarul elementelor pastrate: ";
    28. std::cin >> k;
    29. std::cout << "Introduceti cele " << n << " numere: ";
    30. for (int i = 0; i < n; i++) {
    31. int value;
    32. std::cin >> value;
    33. array.push_back(value);
    34. }
    35. std::vector<int> result = mink_v6(array, k);
    36. std::cout << "Elementele pastrate sunt:";
    37. for (int i = 0; i < k; i++) {
    38. std::cout << ' ' << result[i];
    39. }
    40. std::cout << std::endl;
    41. }