Witam. Sprawdzarka themis.lo14.wroc.pl wyrzuca mi błąd "illegal syscall". Niestety nie wiem czemu ten błąd następuję. Tutaj jest treść mojego zadania: > Hieronim strasznie lubi bawić się wieżami Hanoi. Wieże Hanoi to trzy pręty, na jednym z nich znajduje się h krążków różnych rozmiarów, poukładanych od największego (h-tego) na dole do najmniejszego (pierwszego) na górze. Krążki można przekładać po jednym na raz, krążka większego nie można położyć na mniejszym. Hieronim potrzebuje programu, który sprawdzi, czy sekwencja ruchów, którą chce wykonać, jest zgodna z powyższymi regułami.
Wejście
Pierwsza linia wejścia zawiera liczbę h - jest to ilość krążków. Na początku wszystkie krążki znajdują się na pierwszym pręcie. Następnie dana jest liczba n - jest to ilość ruchów, którą chce wykonać Hieronim. Następnie danych jest n liczb, które oznaczają, że Hieronim chce przenieść krążek z pręta:
1 - pierwszego pręta na drugi
2 - pierwszego na trzeci
3 - drugiego na trzeci
4 - drugiego na pierwszy
5 - trzeciego na pierwszy
6 - trzeciego na drugi
Wyjście
Jeżeli sekwencja ruchów, którą chce wykonać Hieronim jest poprawna, należy wypisać DOBRZE. W przeciwnym wypadku należy wypisać ZLE.>
A tutaj mój program:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int ilosc_krazkow, ilosc_ruchow, ruch,x;
bool dobrze=true;
vector<int> p1, p2, p3;
cin>>ilosc_krazkow>>ilosc_ruchow;
p1.reserve(ilosc_krazkow);
p2.reserve(ilosc_krazkow);
p3.reserve(ilosc_krazkow);
for(int i=1; i<=ilosc_ruchow; i++)
{
cin>>x;
for(int k=ilosc_krazkow; k>=1; k--)
{
p1.push_back(k);
}
if(x==1 && p1.size()==0)
dobrze=false;
else if(x==1)
{
p2.push_back(p1[p1.size()-1]);
p1.pop_back();
}
if(x==2 && p1.size()==0)
dobrze=false;
else if(x==2)
{
p3.push_back(p1[p1.size()-1]);
p1.pop_back();
}
if(x==3 && p2.size()==0)
dobrze=false;
else if(x==3)
{
p3.push_back(p2[p2.size()-1]);
p2.pop_back();
}
if(x==4 && p2.size()==0)
dobrze=false;
else if(x==4)
{
p1.push_back(p2[p2.size()-1]);
p2.pop_back();
}
if(x==5 && p3.size()==0)
dobrze=false;
else if(x==5)
{
p1.push_back(p3[p3.size()-1]);
p3.pop_back();
}
if(x==6 && p3.size()==0)
dobrze=false;
else if(x==6)
{
p2.push_back(p3[p3.size()-1]);
p3.pop_back();
}
if(p1.size()>1)
{
if(p1[p1.size()-1]>p1[p1.size()-2])
dobrze=false;
}
if(p2.size()>1)
{
if(p2[p2.size()-1]>p2[p2.size()-2])
dobrze=false;
}
if(p3.size()>1)
{
if(p3[p3.size()-1]>p3[p3.size()-2])
dobrze=false;
}
}
if(dobrze==true)
cout<<"DOBRZE";
else
cout<<"ZLE";
return 0;
}
Niestety nie udało mi się wpaść, na jakiś inny sposób. Sam program działa u mnie poprawnie. Z góry dziękuję za pomoc