Tìm các vị trí phần tử nhỏ nhất trong dãy số

30
Lập trình C++

Bài toán: Cho N và dãy a1, a2,…,aN. Đưa ra phần tử nhỏ nhất của dãy số và các vị trí phần tử đạt giá trị nhỏ nhất. 

Ví dụ: N = 6; dãy 2 1 4 2 1 4 2 và 5.

Code tham khảo: 

#include <iostream>
using namespace std;
// Ham tim GTNN cua day so:
int Min (int a[], int n){
    int m = 32000;
    for (int i = 0; i < n; i++) {
        if (m > a[i])
            m = a[i];
    }
    return m;
}
int main() {
    freopen("PMIN.INP","r",stdin);
    freopen("PMIN.OUT","w",stdout);
    int n; int a[1000];
    cin >> n;
    for (int i=0; i < n; i++) {
        cin >> a[i];
    }
    int min = Min(a, n);
    cout << min << endl;
    for (int i = 0; i < n; i++) {
        if (a[i] == min) cout << i + 1 << " ";
    }
    return 0;
}