Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "Stack.h"
- int max(int a, int b)
- {
- if (a > b)
- {
- return a;
- }
- return b;
- }
- int MakeEven(Stack<int>& s1, Stack<int>& s2, Stack<int>& s3)
- {
- while (s1.GetHeight() != s2.GetHeight() || s2.GetHeight() != s3.GetHeight())
- {
- int height1 = s1.GetHeight();
- int height2 = s2.GetHeight();
- int height3 = s3.GetHeight();
- int max_h = max(s1.GetHeight(), max(s2.GetHeight(), s3.GetHeight()));
- if (height1 == max_h)
- {
- s1.pop();
- }
- else if (height2 == max_h)
- {
- s2.pop();
- }
- else s3.pop();
- }
- return s1.GetHeight();
- }
- int main()
- {
- int size1, size2, size3;
- std::cin >> size1 >> size2 >> size3;
- Stack<int> s1(size1);
- Stack<int> s2(size2);
- Stack<int> s3(size3);
- int input;
- for (int i = 0; i < size1; ++i)
- {
- std::cin >> input;
- s1.push(input);
- }
- s1.reverse();
- for (int i = 0; i < size2; ++i)
- {
- std::cin >> input;
- s2.push(input);
- }
- s2.reverse();
- for (int i = 0; i < size3; ++i)
- {
- std::cin >> input;
- s3.push(input);
- }
- s3.reverse();
- std::cout << MakeEven(s1, s2, s3) << std::endl;
- return 0;
- }
- //самия стек
- #include <iostream>
- template <class T>
- class Stack
- {
- private:
- T * arr;
- int count;
- int size;
- int height;
- public:
- Stack(int);
- ~Stack();
- bool empty();
- void push(const T&);
- void pop();
- void reverse();
- T top();
- int GetHeight()const;
- };
- template <class T>
- Stack<T> ::Stack(int size) :
- size(size),
- count(0),
- height(0)
- {
- arr = new T[size];
- }
- template <class T>
- Stack<T> :: ~Stack()
- {
- if (arr == nullptr)
- {
- }
- else delete[]arr;
- }
- template <class T>
- bool Stack<T>::empty()
- {
- return count == 0;
- }
- template <class T>
- void Stack<T> ::push(const T& input)
- {
- if (count == size)
- {
- std::cout << "-1\n";
- return;
- }
- arr[count++] = input;
- height += input;
- }
- template <class T>
- void Stack<T> ::pop()
- {
- if (empty())
- {
- std::cout << "Error";
- return;
- }
- height -= arr[count - 1];
- --count;
- }
- template <class T>
- T Stack<T>::top()
- {
- return arr[count];
- }
- template <class T>
- void Stack<T>::reverse()
- {
- T *temp = new T[size];
- for (int i = 0; i < count; i++)
- {
- temp[i] = arr[count - i - 1];
- }
- delete[] arr;
- arr = temp;
- }
- template<class T>
- int Stack<T>::GetHeight() const
- {
- return height;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement