Tìm giá trị lớn thứ k của dãy số

Lập trình C++

Bài toán. Tìm giá trị lớn thứ k của dãy số. Nhập vào số lượng phần tử n và vị trí lớn thứ k (1 dòng), dòng thứ 2 là dãy số. Yêu cầu: Ghi ra vị trí lớn thứ k trong dãy số. Ví dụ: 

MINK.INP

MINK.OUT

6 3

27 13 24 19 17 20

20

Code tham khảo:

#include <iostream>
#include <algorithm>
using namespace std;

int main () {
    freopen("MINK.INP","r",stdin);
    freopen("MINK.OUT","w",stdout);
    int n, k, a[1000], b[1000];
    cin >> n >> k;
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    for (int i = 0; i < n; i++) {
        b[i] = a[i];
    }
    sort(b, b+n, greater<int>());
    if (b[k-1] == b[0]) cout << -1;
    else cout << b[k-1];
    return 0;
}

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *