using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; class MyStack { private T[] array; private int capacity; public int size { get; private set; } public MyStack(){ capacity = 10; array = new T[capacity]; size = 0; } public void push(T obj) { if (size == capacity) { T[] tmp = new T[2 * capacity]; for (int i = 0; i < size; ++i) { tmp[i] = array[i]; } array = tmp; capacity *= 2; } array[size++] = obj; } public T top() { if (size == 0) { throw new Exception("Zero stack size"); } return array[size - 1]; } public void pop() { array[size] = default(T); --size; } } class Program { static void Main(string[] args) { int[] inputData = new int[] { 1, 2, 3, -1, -2, -3 }; MyStack st = new MyStack(); int[] result = new int[inputData.Length]; int curIndex = 0; foreach (int x in inputData) { if (x < 0) { result[curIndex++] = x; } else { st.push(x); } } while (st.size > 0) { result[curIndex++] = st.top(); st.pop(); } foreach (int x in result) { Console.Write(x + " "); } Console.WriteLine(); } }