Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <set>
- #include <stack>
- #include <vector>
- using namespace std;
- int main()
- {
- // int a[11] = {0, 5, 7, 10, 6, 9, 9, 1, 7, 11, 8};
- long long value = 0;
- multiset<int> mset;
- multiset<int>::iterator it;
- int n;
- long long a[100000];
- cin >> n;
- for (int i = 1; i <= n; i++)
- {
- cin >> a[i];
- }
- a[n + 1] = 0;
- int m = 0;
- int zero = -1;
- bool honeyMoon = true;
- // long long s[100000]; // shesacvlelia
- vector<int> v;
- bool fi = true;
- bool la = true;
- int numVecs = 1;
- bool arrayFinished = false;
- bool arrayFirst = true;
- for (int k = 1; k <= n + 1; k++)
- {
- if (a[k] != 0) {
- m++;
- if (numVecs == 2) arrayFirst = false;
- v.push_back(a[k]);
- int sss = v.size();
- while (sss >= 3 && v[m - 3] <= v[m - 2] && v[m - 2] >= v[m - 1])
- {
- v[m - 3] = v[m - 3] - v[m - 2] + v[m - 1];
- v.erase(v.begin() + v.size() - 1);
- v.erase(v.begin() + v.size() - 1);
- m -= 2;
- sss -= 2;
- }
- cout << "vector elements: " << endl;
- for (int i = 0; i < v.size(); ++i)
- {
- cout << v[i] << endl;
- }
- cout << "finish" << endl;
- if (k == n + 1) arrayFinished = true;
- } else if (k == zero + 1) {
- zero++; // ეს ნიშნავს, რომ
- } else { // ვა ნული შემოვიდა? დათვალე მნიშვნელობა წინა მიმდევრობის და გაუშვი სეტში
- zero = k;
- int mi = 0;
- int sign;
- if (n % 2 != 0)
- sign = -1; // ???
- else
- sign = 1;
- int size = v.size();
- if (size >= 2 && v[0] != 0 && arrayFirst) {
- // fi = false;
- while (mi < size - 2 && v[1] <= v[0]) { //+-1
- value = value + sign * (v[1] - v[0]); // aq sheidzleba minusi undodes tavidan
- mi += 2;
- v.erase(v.begin());
- v.erase(v.begin());
- }
- }
- if (n % 2 != 0)
- sign = -1; // ???
- else
- sign = 1;
- mi = v.size() - 1;
- size = v.size();
- if (size >= 2 && v[mi] != 0 && arrayFinished) {
- // la = false;
- while (mi >= 1 && v[v.size() - 1] >= v[v.size() - 2]) {
- value = value + sign * (v[v.size() - 2] - v[v.size() - 1]);
- v.erase(v.begin() + v.size() - 1);
- v.erase(v.begin() + v.size() - 1);
- mi -= 2;
- }
- }
- cout << endl;
- for (int i = 0; i < v.size(); i++)
- {
- cout << "vamateb am mnishvnelobas multisetshi: \n" << v[i] << endl;
- mset.insert(v[i]);
- }
- // ახლა უნდა გადავიდეს შემდეგ მიმდევრობაზე, მარა რანაირად?!
- v.clear();
- numVecs++;
- m = 0;
- }
- }
- bool first = true;
- cout << "elements in multiset: " << endl;
- for (multiset<int>::reverse_iterator rit = mset.rbegin() ; rit != mset.rend(); ++rit) {
- if (first) {
- cout << *rit << endl;;
- value += *rit;
- first = false;
- } else {
- cout << *rit << endl;;
- value -= *rit;
- first = true;
- }
- }
- cout << endl;
- // cout << value << endl;
- long long sum = 0;
- for (int i = 1; i <= n; i++)
- {
- sum += a[i];
- }
- long long Annie = (sum + value) / 2;
- long long Bernie = (sum - value) / 2;
- cout << Annie << endl;
- cout << Bernie << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment