Back to list of problems
The Dole Queue
133.c
#include <stdio.h> int people[21]; int main(void) { int N,k,m; int i; while(1) { int pos1,pos2; int a; int inicio=1; if (scanf(" %d %d %d", &N, &k, &m)!=3) { exit(0); } if (N==0) { exit(0); } pos1=1; pos2=N; for(i=1; i<=N; i++) { people[i]=1; } while(1) { int done=1; for(i=1; i<=N; i++) { if (people[i]) { done=0; break; } } if (done) { break; } a=0; while(1) { if (people[pos1]) { a++; } if (a==k) { break; } pos1++; if (pos1>N) { pos1=1; } } a=0; while(1) { if (people[pos2]) { a++; } if (a==m) { break; } pos2--; if (pos2<1) { pos2=N; } } people[pos1]=people[pos2]=0; if (!inicio) { printf(","); } inicio=0; if (pos1==pos2) { printf("%3d", pos1); } else { printf("%3d%3d", pos1, pos2); } } printf("\n"); } exit(0); }