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 }