Mam takie oto zadanie:
Karty
Limit pamięci: 32 MB
Tasujemy talię kart za pomocą następujących operacji:
A - przełożenie pierwszej karty z góry na dół stosu
B - przełożenie drugiej karty z góry na dół stosu
Twoim zadaniem jest obliczyć, która karta będzie na górze n-elementowej talii kart po k operacjach. Karty są ponumerowane kolejno od góry liczbami od 1 do n.
Wejście
W pierwszym wierszu znajdują się dwie liczby całkowite n i k (int). W drugim wierszu znajduje się k znaków: A lub B, oznaczających rodzaj kolejnych operacji na talii kart.
Wyjście
Pierwszy i jedyny wiersz wyjścia powinien zawierać jedną liczę całkowitą - numer karty na górze stosu.
Moje rozwiązanie podczas którego wyświetla mi komunikat, że program przestał działać z powodu wystąpienia problemu:
#include <cstdio>
int main()
{ int n, k, pom;
scanf("%d %d\n", &n, &k);
int kar[n];
for (int x=0; x<=n-1; x++)
kar[x]=x+1;
char p[k+1];
for (int i=0; i<=k-1; i++)
{scanf("%s", p[i]);
if (p[i]='A')
{pom=kar[0];
for (int y=n-1; y>=1; y--)
kar[y]=kar[y-1];
kar[n-1]=pom;}
else
{
pom=kar[1];
for (int z=n-1; z>=2; z--)
kar[z]=kar[z-1];
kar[n-1]=pom;}
}
printf("%d", kar[0]);
return 0;
}
Ktoś mi wytknie błędy?