Advertisement
Guest User

Untitled

a guest
Mar 20th, 2019
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.31 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <fstream>
  4. #include <algorithm>
  5. #include <string>
  6.  
  7. using namespace std;
  8.  
  9. int main()
  10. {
  11. bool www = false;
  12. string str;
  13. cin >> str;
  14. vector <int> a(10);
  15. int size = str.size();
  16. if (str.size() >= 39 || str.size() == 1)
  17. {
  18. cout << -1 << " " << -1;
  19. return 0;
  20. }
  21. for (int i = 0; i < str.size(); i++)
  22. {
  23. a[str[i] - '0']++;
  24. }
  25. long long int biggest = 0;
  26. if (size == 38)
  27. {
  28. if (a[1] == 2 && a[0] == 36)
  29. {
  30. long long int k = 1e18;
  31. cout << k << " " << k;
  32. return 0;
  33. }
  34. else
  35. {
  36. cout << -1 << " " << -1;
  37. return 0;
  38. }
  39. }
  40. int ch = size - a[0];
  41. if (a[9] == 37)
  42. {
  43. cout << -1 << " " << -1;
  44. return 0;
  45. }
  46. if (size == 2 && a[0] == 2)
  47. {
  48. cout << 0 << " " << 0;
  49. return 0;
  50. }
  51. if (ch == 0)
  52. {
  53. cout << -1 << " " << -1;
  54. return 0;
  55. }
  56. if (ch == 1 && size >= 21 || (size == 20) && ch == 1 && a[1] == 0)
  57. {
  58. cout << -1 << " " << -1;
  59. return 0;
  60. }
  61. bool check = true;
  62.  
  63. long long int small = 0;
  64.  
  65. int cnt = 0;
  66. if (size == 20 && a[1] == 1 && a[0] == 19)
  67. {
  68. cout << 0 <<" ";
  69. long long int k = 1e18;
  70. cout << k;
  71. return 0;
  72. }
  73. if (a[0] != 0 && size <= 19)
  74. {
  75. cout << 0 << " ";
  76. a[0]--;
  77. size--;
  78. }
  79. else
  80. {
  81. while (check)
  82. {
  83. for (int i = 0; i < 10; i++)
  84. {
  85. if (a[i] != 0 && (small != 0 || (small == 0 && i != 0)))
  86. {
  87. small = small * 10;
  88. cnt = i;
  89. a[i]--;
  90. size--;
  91. small += cnt;
  92. break;
  93. }
  94. }
  95. if (size < 19 || ((size == 19) && a[0] == 18) && a[1] == 1)
  96. {
  97. check = false;
  98. long long int k = 1e18;
  99. if (size == 18 && small == k)
  100. {
  101. www = true;
  102. biggest = small;
  103. }
  104. else
  105. {
  106. if (small > k)
  107. {
  108. cout << -1 << " " << -1;
  109. return 0;
  110. }
  111. else
  112. {
  113. cout << small << " ";
  114. }
  115. }
  116. }
  117. }
  118. }
  119. cnt = 0;
  120. long long int bigges = 0;
  121. while (size)
  122. {
  123. for (int i = 0; i < 10; i++)
  124. {
  125. if (a[i] != 0 && (bigges != 0 || (bigges == 0 && i != 0)))
  126. {
  127. bigges = bigges * 10;
  128. cnt = i;
  129. a[i]--;
  130. size--;
  131. bigges += cnt;
  132. break;
  133. }
  134. }
  135. if (www)
  136. {
  137. small = bigges;
  138. }
  139. else
  140. {
  141. biggest = bigges;
  142. }
  143. }
  144. if (!www)
  145. {
  146. cout << biggest;
  147. }
  148. else
  149. {
  150. cout << small << " " << biggest;
  151. }
  152. return 0;
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement