Fotolog

A través del espejo
2010-10-12: A través del espejo
¡La radio habla en binario!
2010-10-10: ¡La radio habla en binario!
Gigaminx (regalo por mi cumple)
2010-09-16: Gigaminx (regalo por mi cumple)
Trini en bici
2010-09-05: Trini en bici
Valporquero
2010-08-28: Valporquero
Mi bici nueva
2010-08-22: Mi bici nueva
Boda de Mario y Ana
2010-08-13: Boda de Mario y Ana
De cañones en Guara
2010-08-07: De cañones en Guara
Trini y Mari en Marbella
2010-08-05: Trini y Mari en Marbella
Trini y Chelo en Tabarca
2010-08-03: Trini y Chelo en Tabarca
Valid XHTML 1.1
Acceder
Volver a la lista de problemas

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);
}