# PBinfo #4678 – MatrixReord – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: Darius

## Enunț

Vi se dă o matrice cu n linii și m coloane care memorează numere naturale.

Cerința
Să se reordoneze elementele de pe fiecare linie astfel încât numerele impare să se afle în ordine crescătoare la începutul liniei, iar numerele pare, de asemenea în ordine crescătoare, la sfârșitul liniei.

Date de intrare
Programul citește de la tastatură numerele n și m, iar apoi de pe fiecare din următoarele n linii se citesc câte m numere reprezentând elementele acelei linii.

Date de ieșire
Programul va afișa pe ecran matricea după reordonare.

Restricții și precizări

1 ≤ n, m ≤ 50
numerele din matrice vor fi cuprinse între 0 și 1000

Exemplu:
Intrare

5 5
6 2 5 3 1
8 2 4 6 0
9 7 5 3 1
9 7 8 1 3
4 2 6 3 1
Ieșire

1 3 5 2 6
0 2 4 6 8
1 3 5 7 9
1 3 7 9 8
1 3 2 4 6

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
int a[55][55], n, m, fr[1001];
int main()
{
    int i, j, k;
    cin >> n >> m;
    for (i = 1; i <= n; i++)
        for (j = 1; j <= m; j++)
            cin >> a[i][j];
    for (i = 1; i <= n; i++)
    {
        for (j = 1; j <= m; j++)
            fr[a[i][j]]++;
        k = 0;
        for (j = 1; j <= 1000; j += 2)
            while (fr[j] > 0)
            {
                a[i][++k] = j;
                fr[j]--;
            }
        for (j = 0; j <= 1000; j += 2)
            while (fr[j] > 0)
            {
                a[i][++k] = j;
                fr[j]--;
            }
    }
    for (i = 1; i <= n; i++)
    {
        for (j = 1; j <= m; j++)
            cout << a[i][j] << " ";
        cout << "\n";
    }
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/4678)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/4678/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-4678/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
