desbordamiento de pila c ++

Así que yo, tratando de resolver una tarea. ya tengo código, pero las salidas del sistema, "desbordamiento de pila" soy nuevo en c ++ y mi inglés no es bueno, así que lo siento por malentendidos =)

   #include <iostream> 

using namespace std;

int main (){
    int n;
    int x;
    int k = 0; // счетчик для рабочего массива
    int a [200000];
 scanf("%d\n",&n);   

 for (int i = 0; i< n; ++i){
     std::cin >> x;
     if (x > 0){
             k++;
             a[k] = x;
           }else if(x == 0){
                 for (int q = 1; q <= k; ++q){ // копирование 
                          a[k+q] = a[q];
                     }
                 k *= 2;
                 }else{
                          printf("%d %d\n",a[k],k);
                          k--;
                        }
     }
     system("pause");


}

Parece que el algoritmo funciona correctamente, pero el único problema es la pila. ¡muchas gracias!

Respuestas a la pregunta(3)

Su respuesta a la pregunta