File tree Expand file tree Collapse file tree 5 files changed +296
-0
lines changed Expand file tree Collapse file tree 5 files changed +296
-0
lines changed Original file line number Diff line number Diff line change 1+ #include < bits/stdc++.h>
2+ using namespace std ;
3+ typedef long long ll;
4+ #define mod 1000000007
5+ #define endl " \n "
6+
7+ vector<int > v;
8+ stack<int > s;
9+
10+ // Nearest Greater to Right - NGR
11+ void solve (int a[], int n) {
12+
13+ for (int i = n - 1 ; i >= 0 ; i--) {
14+
15+ if (s.size () == 0 ) {
16+ v.push_back (-1 );
17+ }
18+
19+ else if (s.size () > 0 && s.top () > a[i]) {
20+ v.push_back (s.top ());
21+ }
22+ else if (s.size () > 0 && s.top () <= a[i]) {
23+ while (s.size () > 0 && s.top () <= a[i]) {
24+ s.pop ();
25+ }
26+
27+ if (s.size () == 0 ) v.push_back (-1 );
28+ else v.push_back (s.top ());
29+ }
30+
31+ s.push (a[i]);
32+
33+ }
34+
35+ }
36+
37+
38+ int main ()
39+ {
40+
41+ ios_base::sync_with_stdio (0 ); cin.tie (0 ); cout.tie (0 );
42+
43+ #ifndef ONLINE_JUDGE
44+ freopen (" input.txt" , " r" , stdin);
45+ freopen (" output.txt" , " w" , stdout);
46+ #endif
47+
48+ int n;
49+ cin >> n;
50+ int a[n];
51+
52+ for (int i = 0 ; i < n; i++) cin >> a[i];
53+ solve (a, n);
54+
55+ reverse (v.begin (), v.end ());
56+ for (int i = 0 ; i < n; i++) cout << v[i] << " " ;
57+
58+ }
59+
Original file line number Diff line number Diff line change 1+ #include < bits/stdc++.h>
2+ using namespace std ;
3+ typedef long long ll;
4+ #define mod 1000000007
5+ #define endl " \n "
6+
7+ vector<int > v;
8+ stack<int > s;
9+
10+ // Nearest Greater to left - NGL
11+ void solve (int a[], int n) {
12+
13+ for (int i = 0 ; i < n; i++) {
14+
15+ if (s.size () == 0 ) {
16+ v.push_back (-1 );
17+ }
18+
19+ else if (s.size () > 0 && s.top () > a[i]) {
20+ v.push_back (s.top ());
21+ }
22+ else if (s.size () > 0 && s.top () <= a[i]) {
23+ while (s.size () > 0 && s.top () <= a[i]) {
24+ s.pop ();
25+ }
26+
27+ if (s.size () == 0 ) v.push_back (-1 );
28+ else v.push_back (s.top ());
29+ }
30+
31+ s.push (a[i]);
32+
33+ }
34+
35+ }
36+
37+
38+ int main ()
39+ {
40+
41+ ios_base::sync_with_stdio (0 ); cin.tie (0 ); cout.tie (0 );
42+
43+ #ifndef ONLINE_JUDGE
44+ freopen (" input.txt" , " r" , stdin);
45+ freopen (" output.txt" , " w" , stdout);
46+ #endif
47+
48+ int n;
49+ cin >> n;
50+ int a[n];
51+
52+ for (int i = 0 ; i < n; i++) cin >> a[i];
53+ solve (a, n);
54+
55+ // reverse(v.begin(), v.end());
56+ for (int i = 0 ; i < n; i++) cout << v[i] << " " ;
57+
58+ }
59+
Original file line number Diff line number Diff line change 1+ #include < bits/stdc++.h>
2+ using namespace std ;
3+ typedef long long ll;
4+ #define mod 1000000007
5+ #define endl " \n "
6+
7+ vector<int > v;
8+ stack<int > s;
9+
10+ // Nearest Smaller to Right - NSR
11+ void solve (int a[], int n) {
12+
13+ for (int i = n - 1 ; i >= 0 ; i--) {
14+
15+ if (s.size () == 0 ) {
16+ v.push_back (-1 );
17+ }
18+
19+ else if (s.size () > 0 && s.top () < a[i]) {
20+ v.push_back (s.top ());
21+ }
22+ else if (s.size () > 0 && s.top () >= a[i]) {
23+ while (s.size () > 0 && s.top () >= a[i]) {
24+ s.pop ();
25+ }
26+
27+ if (s.size () == 0 ) v.push_back (-1 );
28+ else v.push_back (s.top ());
29+ }
30+
31+ s.push (a[i]);
32+
33+ }
34+
35+ }
36+
37+
38+ int main ()
39+ {
40+
41+ ios_base::sync_with_stdio (0 ); cin.tie (0 ); cout.tie (0 );
42+
43+ #ifndef ONLINE_JUDGE
44+ freopen (" input.txt" , " r" , stdin);
45+ freopen (" output.txt" , " w" , stdout);
46+ #endif
47+
48+ int n;
49+ cin >> n;
50+ int a[n];
51+
52+ for (int i = 0 ; i < n; i++) cin >> a[i];
53+ solve (a, n);
54+
55+ reverse (v.begin (), v.end ());
56+ for (int i = 0 ; i < n; i++) cout << v[i] << " " ;
57+
58+ }
59+
Original file line number Diff line number Diff line change 1+ #include < bits/stdc++.h>
2+ using namespace std ;
3+ typedef long long ll;
4+ #define mod 1000000007
5+ #define endl " \n "
6+
7+ vector<int > v;
8+ stack<int > s;
9+
10+ // Nearest Smaller to Left - NSL
11+ void solve (int a[], int n) {
12+
13+ for (int i = 0 ; i < n; i++) {
14+
15+ if (s.size () == 0 ) {
16+ v.push_back (-1 );
17+ }
18+
19+ else if (s.size () > 0 && s.top () < a[i]) {
20+ v.push_back (s.top ());
21+ }
22+ else if (s.size () > 0 && s.top () >= a[i]) {
23+ while (s.size () > 0 && s.top () >= a[i]) {
24+ s.pop ();
25+ }
26+
27+ if (s.size () == 0 ) v.push_back (-1 );
28+ else v.push_back (s.top ());
29+ }
30+
31+ s.push (a[i]);
32+
33+ }
34+
35+ }
36+
37+
38+ int main ()
39+ {
40+
41+ ios_base::sync_with_stdio (0 ); cin.tie (0 ); cout.tie (0 );
42+
43+ #ifndef ONLINE_JUDGE
44+ freopen (" input.txt" , " r" , stdin);
45+ freopen (" output.txt" , " w" , stdout);
46+ #endif
47+
48+ int n;
49+ cin >> n;
50+ int a[n];
51+
52+ for (int i = 0 ; i < n; i++) cin >> a[i];
53+ solve (a, n);
54+
55+ // reverse(v.begin(), v.end());
56+ for (int i = 0 ; i < n; i++) cout << v[i] << " " ;
57+
58+ }
59+
Original file line number Diff line number Diff line change 1+ #include < bits/stdc++.h>
2+ using namespace std ;
3+ typedef long long ll;
4+ #define mod 1000000007
5+ #define endl " \n "
6+
7+ // Stock Span Problem
8+ vector<int > v;
9+ stack<pair<int , int >> s;
10+
11+ // Nearest Greater to Left - NGL
12+ void solve (int a[], int n) {
13+
14+ for (int i = 0 ; i < n; i++) {
15+
16+ if (s.size () == 0 ) {
17+ v.push_back (-1 );
18+ }
19+
20+ else if (s.size () > 0 && s.top ().first > a[i]) {
21+ v.push_back (s.top ().second );
22+ }
23+ else if (s.size () > 0 && s.top ().first <= a[i]) {
24+ while (s.size () > 0 && s.top ().first <= a[i]) {
25+ s.pop ();
26+ }
27+
28+ if (s.size () == 0 ) v.push_back (-1 );
29+ else v.push_back (s.top ().second );
30+ }
31+
32+ s.push ({a[i], i});
33+
34+ }
35+
36+ }
37+
38+
39+ int main ()
40+ {
41+
42+ ios_base::sync_with_stdio (0 ); cin.tie (0 ); cout.tie (0 );
43+
44+ #ifndef ONLINE_JUDGE
45+ freopen (" input.txt" , " r" , stdin);
46+ freopen (" output.txt" , " w" , stdout);
47+ #endif
48+
49+ int n;
50+ cin >> n;
51+ int a[n];
52+
53+ for (int i = 0 ; i < n; i++) cin >> a[i];
54+ solve (a, n);
55+
56+ // reverse(v.begin(), v.end());
57+ for (int i = 0 ; i < n; i++) cout << i - v[i] << " " ;
58+
59+ }
60+
You can’t perform that action at this time.
0 commit comments