Advertisement
LittleDeD

Untitled

Dec 11th, 2019
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.64 KB | None | 0 0
  1. #include <iostream> //input si output
  2. #include <fstream> //lucrul cu fisiere
  3. #include <cmath> //functii matematice
  4. #include <ctime> //date and time utilities
  5. #include <cstring> //lucrul cu siruri de caractere
  6. #include <climits> //Limitele tipurilor de date
  7. #include <cfloat> //Pt float sa vezi cate decimale poate memora
  8. #include <cstdio> //input/output library
  9. #include <cstdlib> //miscellaneous utilities
  10.  
  11. using namespace std;
  12. ifstream f("bac.txt");
  13.  
  14. int main()
  15. {
  16. int n, frec[10] = { 0 }, ap_imp = 0, x, i, j, ok = 0;
  17.  
  18. //CITIRE
  19. f >> n;
  20. for (i = 1; i <= n; i++)
  21. {
  22. f >> x;
  23. frec[x]++;
  24. }
  25.  
  26. //NR APARITII IMPARE SI VERIFICARE DACA EXISTA NR PARE
  27. for (i = 1; i <= 9; i++)
  28. {
  29. if (frec[i] % 2 == 1) ap_imp++;
  30. if (i % 2 == 0 && frec[i] != 0) ok = 1;
  31. }
  32.  
  33. int vnr[10001] = { 0 }, k = 2, nr = 0;
  34.  
  35. //VEDEM DACA PUTEM CONSTRUI UN NR PALINDROM
  36. if ((n % 2 == 0 && ap_imp == 1) || (n % 2 == 1 && ap_imp == 0) || ap_imp > 1 || ok == 0) nr = -1;
  37. //CONSTRUIREA NR
  38. else
  39. {
  40. //PUNEM IN FATA CEA MAI MARE CIFRA PARA IN NR
  41. i = 8; ok = 0;
  42. while(i >= 2 && ok == 0)
  43. {
  44. if (frec[i] != 0)
  45. {
  46. vnr[1] = i;
  47. vnr[n] = i;
  48. frec[i] -= 2;
  49. ok = 1;
  50. }
  51. i = i - 2;
  52. }
  53. //CONSTRUIM RESTUL NR
  54. for (i = 9; i >= 1; i--)
  55. {
  56. if (frec[i] != 0)
  57. {
  58. for (j = 1; j <= frec[i] / 2; j++)
  59. {
  60. vnr[k] = i; vnr[n - k + 1] = i;
  61. k++;
  62. }
  63. }
  64. if (frec[i] % 2 == 1) vnr[n / 2 + 1] = i;
  65. }
  66. }
  67. //AFISAM NR DACA EXISTA
  68. if (nr == 0)
  69. {
  70. i = 1;
  71. while (vnr[i] != 0)
  72. {
  73. cout << vnr[i] << ' ';
  74. i++;
  75. }
  76. }
  77. else cout << -1;
  78. cout << endl;
  79. system("pause");
  80. return 0;
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement