# PBinfo #183 – sortpp – Rezolvare C++

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

## Enunț

Cerinţa
Să se ordoneze crescător elementele pătrat perfect ale unui şir dat, fără a afecta elementele care nu sunt pătrat perfect.

Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spaţii, reprezentând elementele vectorului.

Date de ieşire
Programul afișează pe ecran, separate prin spaţii, cele n elemente ale vectorului, după sortare.

Restricţii şi precizări

1 ≤ n ≤ 1000
cele n numere citite vor fi mai mici decât 50.000

Exemplu:
Intrare

8
9 15 16 4 5 1 7 9
Ieșire

1 15 4 9 5 9 7 16

## Cod sursă C++

```cpp
#include <iostream>
#include <math.h>
using namespace std;
int n, a[1005];
int pp(int x) {
    return (int)sqrt((double)x) == sqrt((double)x);
}
int main() {
    cin >> n;
    for (int i = 1; i <= n; ++i)
        cin >> a[i];
    for (int i = 1; i <= n; ++i)
        if (pp(a[i]))
            for (int j = i + 1; j <= n; ++j)
                if (pp(a[j]))
                    if (a[i] > a[j])
                        swap(a[i], a[j]);
    for (int i = 1; i <= n;++i)
        cout << a[i] << " ";
    return 0;
}
```

## Resurse

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