-
Notifications
You must be signed in to change notification settings - Fork 6
/
Building facing sun
54 lines (43 loc) · 1.08 KB
/
Building facing sun
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/*
Monu lives in a society which is having high rise buildings.
This is the time of sunrise and monu wants see the buildings
receiving the sunlight. Help him in counting the number of
buildings recieving the sunlight.
Given an array arr[] representing heights of buildings.
You have to count the buildings which will see the sunrise
(Assume : Sun rise on the side of array starting point).
*/
#include <bits/stdc++.h>
using namespace std;
int SunFacing(int arr[], int n)
{
stack<int> st;
st.push(0);
for(int i = 0; i < n; i++) {
if(arr[i] > arr[st.top()]) {
st.push(i);
}
}
// For printing building numbers you can simply print all element of stack
// in reverse order of you can use vector in place of stack.
return st.size();
}
int main() {
int n;
cin >> n;
int arr[n];
for(int i = 0; i < n; i++) {
cin >> arr[i];
}
cout << SunFacing(arr, n) << endl;
return 0;
}
/*
INPUT:
5
7 4 8 2 9
OUTPUT:
3
Explanation:
Building with height 7, 8 and 9 will recieve the sunlight during sunrise.
*/