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 Skyline Problem

105.c

#include <stdio.h>

int skyline[10020];

struct building {
	int L;
	int H;
	int R;
};

int num;
struct building bui[5010];

int
main(void) {
	int i,j;
	int last=0;
	int ini=0;

	memset(skyline, 0, sizeof(skyline));
	for(num=0; num<5010; num++) {
		if (scanf("%d %d %d", &bui[num].L, &bui[num].H, &bui[num].R) != 3) {
			break;
		}
		if (bui[num].L > 10000 || bui[num].R > 10000 || bui[num].L > bui[num].R) {
			abort();
		}
	}
	for(i=bui[0].L; i<10020; i++) {
		int max=0;
		for(j=0; j<num; j++) {
			if (bui[j].L <= i && bui[j].R > i) {
				if (bui[j].H > max) {
					max = bui[j].H;
				}
			}
		}
		if (max != last) {
			last = max;
			if (ini) {
				printf(" ");
			} else {
				ini=1;
			}
			printf("%d %d", i, last);
		}
	}
	printf("\n");
	return 0;
}