Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <string>
- const int с = 2;
- struct vector
- {
- int size, n;
- int* vec;
- void init()
- {
- size = 1;
- n = 0;
- vec = new int[size];
- }
- void del()
- {
- delete[] vec;
- }
- /*void empty()
- {
- for (int i = 0; i < size; i++)
- vec[i] = 0;
- }
- void set(int i, int x)
- {
- vec[i] = x;
- }*/
- int get(int i)
- {
- return vec[i];
- n--;
- if (n < size / c)
- shrink();
- }
- void add(int x)
- {
- if (n > size)
- {
- int* new_vec = new int[с * size];
- for (int i = 0; i < size; i++)
- new_vec[i] = vec[i];
- del();
- vec = new_vec;
- }
- vec[n] = x;
- n++;
- }
- int shrink()
- {
- int* new_vec = new int[size / c];
- for (int i = 0; i < size / c; i++)
- new_vec[i] = vec[i];
- del();
- vec = new_vec;
- }
- };
- struct stack
- {
- vector vec;
- void init()
- {
- vec.init();
- }
- void del()
- {
- vec.del();
- }
- void push(int x)
- {
- vec.add(x);
- }
- int pop()
- {
- return vec.get(vec.n);
- }
- };
- int main()
- {
- std::fstream input("stack1.in");
- std::fstream output("stack1.out");
- stack s;
- s.init();
- int m;
- input >> m;
- std::string command;
- for (int i = 0; i < m; i++)
- {
- input >> command;
- if (command == "-") output << s.pop() << "\n";
- else
- {
- std::string t;
- input >> t;
- s.push(atoi(t.c_str()));
- }
- }
- s.del();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement