fbpx

Problema #914 – HalfSort1 – Rezolvari PBInfo

de Mihai-Alexandru

Cerinţa

Se dă un vector cu n elemente numere întregi, n fiind număr par. Să se ordoneze crescător elementele din prima jumătate a vectorului și descrescător elementele din a doua jumătate.

Se vor defini și apela următoarele subprograme:

  • citire, care citește valoarea lui n și cele n elemente ale tabloului
  • afisare, care afișează elementele tabloului, separate prin exact un spațiu
  • sortare, care ordonează elementele vectorului cuprinse între doi indici transmiși ca parametru. Criteriul de ordonare (crescător/descrescător) va fi transmis ca parametru.

În programele C/C++ nu se vor folosi variabile globale.

Date de intrare

Fişierul de intrare halfsort1.in conţine pe prima linie numărul n si pe a doua linie n numere întregi separate prin spaţii.

Date de ieşire

Fişierul de ieşire halfsort1.out va conţine pe prima linie cele n elemente ale vectorului, ordonate conform cerinței, separate printr-un spațiu.

Restricţii şi precizări

  • 1 ≤ n ≤ 100, n număr par
  • valoarea absolută a numerelor de pe a doua linie a fişierului de intrare va fi mai mică decât 1.000.000.000

Exemplu

halfsort1.in

6
8 2 9 4 5 7

halfsort1.out

2 8 9 7 5 4
#include <bits/stdc++.h>
using namespace std;

ifstream cin("halfsort1.in");
ofstream cout("halfsort1.out");

void citire(int& n, int a[]){
    cin >> n;
    for(int i = 1; i <= n; ++i)
        cin >> a[i];
}

void sortare(int n, int a[], int st, int dr, char ch){
    if(ch == 'c'){
        for(int i = st; i < dr; ++i)
            for(int j = i + 1; j <= dr; ++j)
                if(a[i] > a[j])
                    swap(a[i], a[j]);
    }
    else{
        for(int i = st; i < dr; ++i)
            for(int j = i + 1; j <= dr; ++j)
                if(a[i] < a[j])
                    swap(a[i], a[j]);
    }
}

void afisare(int n, int a[]){
    for(int i = 1; i <= n; ++i)
        cout << a[i] << ' ';
}

int main(){

    int n, a[101];
    citire(n, a);
    sortare(n, a, 1, n / 2, 'c');
    sortare(n, a, n / 2 + 1, n, 'd');
    afisare(n, a);
    return 0;
}
Comentarii

S-ar putea sa iti placa