przepełnienie stosu c ++

Tak więc próbuję rozwiązać zadanie. kod już istnieje, ale out systemowy, „przepełnienie stosu” jestem nowy w c ++ i mój angielski nie jest dobry, więc przepraszam za niezrozumienie =)

   #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");


}

wygląda na to, że algorytm działa poprawnie, ale jedynym problemem jest stos. wielkie dzięki!

questionAnswers(3)

yourAnswerToTheQuestion