不是题解
使用单调栈
c++代码:
#include <bits/stdc++.h> using namespace std; typedef long long int ll; const int maxn = 100005; int b[maxn]; int n; pair<int, int> a[maxn]; // id value stack<pair<int, int>> p; int main() { cin >> n; for (int i = 1; i <= n; i++) { a[i].first = i; cin >> a[i].second; } for (int i = 1; i <= n; i++) { if (p.empty()) { p.push(a[i]); } else { while (!p.empty()) { if (a[i].second > p.top().second) { b[p.top().first] = i - p.top().first; p.pop(); } else break; } p.push(a[i]); } } for (int i = 1; i <= n; i++) { cout << b[i] << endl; } }