fbpx

Problema #183 – sortPP – Rezolvari PBInfo

de Mihai-Alexandru

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 50000

Exemplu

Intrare

8
9 15 16 4 5 1 7 9

Ieșire

1 15 4 9 5 9 7 16
#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n;
    cin >> n;
    int a[1001];
    for(int i = 1; i <= n; ++i)
        cin >> a[i];

    for(int i = 1; i <= n; ++i){
        int r = sqrt(a[i]);
        if(r * r == a[i]){
            int min = 10000000, poz = 0;
            for(int j = i; j <= n; ++j){
                int r1 = sqrt(a[j]);
                if(r1 * r1 == a[j] && a[j] < min)
                    min = a[j], poz = j;
            }
            swap(a[i], a[poz]);
        }
    }

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

    return 0;
}
Comentarii

S-ar putea sa iti placa