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









