Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream> //input si output
- #include <fstream> //lucrul cu fisiere
- #include <cmath> //functii matematice
- #include <ctime> //date and time utilities
- #include <cstring> //lucrul cu siruri de caractere
- #include <climits> //Limitele tipurilor de date
- #include <cfloat> //Pt float sa vezi cate decimale poate memora
- #include <cstdio> //input/output library
- #include <cstdlib> //miscellaneous utilities
- using namespace std;
- ifstream f("bac.txt");
- int main()
- {
- int n, frec[10] = { 0 }, ap_imp = 0, x, i, j, ok = 0;
- //CITIRE
- f >> n;
- for (i = 1; i <= n; i++)
- {
- f >> x;
- frec[x]++;
- }
- //NR APARITII IMPARE SI VERIFICARE DACA EXISTA NR PARE
- for (i = 1; i <= 9; i++)
- {
- if (frec[i] % 2 == 1) ap_imp++;
- if (i % 2 == 0 && frec[i] != 0) ok = 1;
- }
- int vnr[10001] = { 0 }, k = 2, nr = 0;
- //VEDEM DACA PUTEM CONSTRUI UN NR PALINDROM
- if ((n % 2 == 0 && ap_imp == 1) || (n % 2 == 1 && ap_imp == 0) || ap_imp > 1 || ok == 0) nr = -1;
- //CONSTRUIREA NR
- else
- {
- //PUNEM IN FATA CEA MAI MARE CIFRA PARA IN NR
- i = 8; ok = 0;
- while(i >= 2 && ok == 0)
- {
- if (frec[i] != 0)
- {
- vnr[1] = i;
- vnr[n] = i;
- frec[i] -= 2;
- ok = 1;
- }
- i = i - 2;
- }
- //CONSTRUIM RESTUL NR
- for (i = 9; i >= 1; i--)
- {
- if (frec[i] != 0)
- {
- for (j = 1; j <= frec[i] / 2; j++)
- {
- vnr[k] = i; vnr[n - k + 1] = i;
- k++;
- }
- }
- if (frec[i] % 2 == 1) vnr[n / 2 + 1] = i;
- }
- }
- //AFISAM NR DACA EXISTA
- if (nr == 0)
- {
- i = 1;
- while (vnr[i] != 0)
- {
- cout << vnr[i] << ' ';
- i++;
- }
- }
- else cout << -1;
- cout << endl;
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement