cses

solution to cses exercise problems
git clone git://git.superpozycja.net/cses
Log | Files | Refs | README

nearest_smaller_values.cpp (665B)


      1 #include <bits/stdc++.h>
      2 
      3 using namespace std;
      4 
      5 using ui = unsigned int;
      6 using l = long;
      7 using ul = unsigned long;
      8 using ll = long long;
      9 using ull = unsigned long long;
     10 
     11 using vi = vector<int>;
     12 using vui = vector<ui>;
     13 using vl = vector<l>;
     14 using vul = vector<ul>;
     15 using vll = vector<ll>;
     16 using vull = vector<ull>;
     17 
     18 void solve()
     19 {
     20 	int n;
     21 	cin >> n;
     22 	stack<pair<int, int>> m;
     23 	for (int i = 0; i < n; i++) {
     24 		int x;
     25 		cin >> x;
     26 		while (!m.empty() && m.top().first >= x)
     27 			m.pop();
     28 		if (m.empty())
     29 			cout << "0 ";
     30 		else
     31 			cout << m.top().second << " ";
     32 
     33 		m.push({x, i + 1});
     34 	}
     35 	cout << "\n";
     36 }
     37 
     38 int main()
     39 {
     40 	ios::sync_with_stdio(0);
     41 	cin.tie(0);
     42 	solve();
     43 }