Skip to content

Instantly share code, notes, and snippets.

@rogerioagjr
Created April 30, 2015 18:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rogerioagjr/ce06b47641261ad2d186 to your computer and use it in GitHub Desktop.
Save rogerioagjr/ce06b47641261ad2d186 to your computer and use it in GitHub Desktop.
Cards2
#include <cstdio> // scanf e printf
#define MAXT 1000100 // defino o tamanho limite da fila como 1000100
int fila[MAXT], n, ini=1, fim; // declaro as variáveis que vou usar
int main(){
while(scanf("%d", &n) && n!=0){ // enquanto a entrada não for zero
ini=1; fim=0; // limpe a fila ("clear();")
for(int i=1; i<=n; i++) fila[++fim]=i; // coloque os inteiros de 1 a n nela ("push(i);")
printf("Discarded cards:"); // imprima "Discarded cards:"
while(fim-ini+1>=2){ // enquanto houver mais de uma carta na fila ("while(size()>=2)")
printf(" %d", fila[ini]); // imprima a primeira carta ("printf(" %d", front());")
ini++; // tire ela da fila ("pop();")
fila[++fim]=fila[ini]; // insira nova primeira carta no fim da fila ("push(front());")
ini++; // e a retire do começo novamente ("pop();")
// se ainda houver mais de um elemento na fila, imprima a vírgula
if(fim-ini+1>=2) printf(","); // ("if(size()>=2) printf(",");")
}
printf("\nRemaining card: %d\n", fila[ini]); // imprima a carta restante ("front()")
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment