fbpx

Problema #180 – sortMinMax – Rezolvari PBInfo

de Mihai-Alexandru

Cerinţa

Să se ordoneze crescător elementele dintr-un şir dat cuprinse între elementul de valoare maximă şi cel de valoare minimă.

Date de intrare

Programul citește de la tastatură numărul n, iar apoi n numere naturale distincte, separate prin spaţii.

Date de ieşire

Programul afișează pe ecran elementele şirului după ordonare.

Restricţii şi precizări

  • 0 < n ≤ 1000
  • elementele şirului sunt numere naturale mai mici decât 1.000.000

Exemplu

Intrare

5
10 20 15 7 12

Ieșire

10 7 15 20 12

Explicație

S-au ordonat elementele aflate pe poziţiile 2, 3, 4.

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n;
    cin >> n;
    int a[1001];
    int min = 1000001, max = 0, imin, imax;
    for(int i = 1; i <= n; ++i)
        cin >> a[i];

    for(int i = 1; i <= n; ++i){
        if(a[i] < min)
            min = a[i], imin = i;
        if(a[i] > max)
            max = a[i], imax = i;
    }

    if(imin > imax) swap(imin, imax);

    for(int i = imin; i < imax; ++i)
        for(int j = i + 1; j <= imax; ++j)
            if(a[i] > a[j])
                swap(a[i], a[j]);

    for(int i = 1; i <= n; ++i)
        cout << a[i] << " ";

    return 0;
}
Comentarii

S-ar putea sa iti placa