Anophoo

termites 4

Nov 24th, 2016
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.21 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <set>
  4. #include <stack>
  5. #include <vector>
  6.  
  7. using namespace std;
  8.  
  9. int main()
  10. {
  11. // int a[11] = {0, 5, 7, 10, 6, 9, 9, 1, 7, 11, 8};
  12. long long value = 0;
  13. multiset<int> mset;
  14. multiset<int>::iterator it;
  15. int n;
  16. long long a[100000];
  17. cin >> n;
  18. for (int i = 1; i <= n; i++)
  19. {
  20. cin >> a[i];
  21. }
  22. a[n + 1] = 0;
  23. int m = 0;
  24. int zero = -1;
  25. bool honeyMoon = true;
  26. // long long s[100000]; // shesacvlelia
  27. vector<int> v;
  28. bool fi = true;
  29. bool la = true;
  30. int numVecs = 1;
  31. bool arrayFinished = false;
  32. bool arrayFirst = true;
  33. for (int k = 1; k <= n + 1; k++)
  34. {
  35. if (a[k] != 0) {
  36. m++;
  37. if (numVecs == 2) arrayFirst = false;
  38. v.push_back(a[k]);
  39. int sss = v.size();
  40. while (sss >= 3 && v[m - 3] <= v[m - 2] && v[m - 2] >= v[m - 1])
  41. {
  42. v[m - 3] = v[m - 3] - v[m - 2] + v[m - 1];
  43. v.erase(v.begin() + v.size() - 1);
  44. v.erase(v.begin() + v.size() - 1);
  45. m -= 2;
  46. sss -= 2;
  47. }
  48. cout << "vector elements: " << endl;
  49. for (int i = 0; i < v.size(); ++i)
  50. {
  51. cout << v[i] << endl;
  52. }
  53. cout << "finish" << endl;
  54. if (k == n + 1) arrayFinished = true;
  55. } else if (k == zero + 1) {
  56. zero++; // ეს ნიშნავს, რომ
  57. } else { // ვა ნული შემოვიდა? დათვალე მნიშვნელობა წინა მიმდევრობის და გაუშვი სეტში
  58. zero = k;
  59. int mi = 0;
  60. int sign;
  61. if (n % 2 != 0)
  62. sign = -1; // ???
  63. else
  64. sign = 1;
  65.  
  66. int size = v.size();
  67. if (size >= 2 && v[0] != 0 && arrayFirst) {
  68. // fi = false;
  69. while (mi < size - 2 && v[1] <= v[0]) { //+-1
  70. value = value + sign * (v[1] - v[0]); // aq sheidzleba minusi undodes tavidan
  71. mi += 2;
  72. v.erase(v.begin());
  73. v.erase(v.begin());
  74. }
  75. }
  76.  
  77. if (n % 2 != 0)
  78. sign = -1; // ???
  79. else
  80. sign = 1;
  81. mi = v.size() - 1;
  82. size = v.size();
  83. if (size >= 2 && v[mi] != 0 && arrayFinished) {
  84. // la = false;
  85. while (mi >= 1 && v[v.size() - 1] >= v[v.size() - 2]) {
  86. value = value + sign * (v[v.size() - 2] - v[v.size() - 1]);
  87. v.erase(v.begin() + v.size() - 1);
  88. v.erase(v.begin() + v.size() - 1);
  89. mi -= 2;
  90. }
  91. }
  92. cout << endl;
  93. for (int i = 0; i < v.size(); i++)
  94. {
  95. cout << "vamateb am mnishvnelobas multisetshi: \n" << v[i] << endl;
  96. mset.insert(v[i]);
  97. }
  98.  
  99. // ახლა უნდა გადავიდეს შემდეგ მიმდევრობაზე, მარა რანაირად?!
  100. v.clear();
  101. numVecs++;
  102. m = 0;
  103. }
  104. }
  105.  
  106. bool first = true;
  107. cout << "elements in multiset: " << endl;
  108. for (multiset<int>::reverse_iterator rit = mset.rbegin() ; rit != mset.rend(); ++rit) {
  109. if (first) {
  110. cout << *rit << endl;;
  111. value += *rit;
  112. first = false;
  113. } else {
  114. cout << *rit << endl;;
  115. value -= *rit;
  116. first = true;
  117. }
  118. }
  119. cout << endl;
  120. // cout << value << endl;
  121. long long sum = 0;
  122. for (int i = 1; i <= n; i++)
  123. {
  124. sum += a[i];
  125. }
  126. long long Annie = (sum + value) / 2;
  127. long long Bernie = (sum - value) / 2;
  128. cout << Annie << endl;
  129. cout << Bernie << endl;
  130. return 0;
  131. }
Advertisement
Add Comment
Please, Sign In to add comment