#include <cstdio> #include <algorithm> using namespace std; //======================================================= // InstallBuilding //======================================================= // Install a building given by // left boundary L // right boundary R // height H // into the skyline array. // // Parameter n is the number of positions in the skyline // array. //======================================================= void InstallBuilding(int* skyline, const int L, const int R, const int H, const int n) { int left = max(L, 0); int right = min(L, n-1); for(int i = left; i < right; i++) { skyline[i] = max(skyline[i], H); } } //======================================================= // InstallBuildings //======================================================= // Read the building descriptions and store them into // array skyline, where skyline[i] is the height of the // skyline from horizontal position i to position i+1. // // Parameter n is the number of positions in the skyline // array. //======================================================= void InstallBuildings(int* skyline, const int n) { int L, R, H; scanf("%d", &L); while(L != 0) { scanf("%d%d", &R, &H); InstallBuilding(skyline, L, R, H, n); } } //======================================================= // ShowSkyline //======================================================= // Write out the skyline stored in array skyline, of // size n. //======================================================= void ShowSkyline(const int* skyline, const int n) { for(int i = 0; i < n; i++) { printf("%d\n", skyline[i]); } } int main() { const int numPositions = 100; int skyline[numPositions]; InstallBuildings(skyline); InstallBuildings(skyline, numPositions); ShowSkyline(skyline, numPositions); }