cj01
(潘梓逸)
1
【模板】单调栈
#include <bits/stdc++.h>
using namespace std;
#define int long long
inline int read() {
int s = 0, w = 1;
char ch = getchar();
while (ch < '0' || ch > '9') {
if (ch == '-') {
w = -1;
}
ch = getchar();
}
while (ch >= '0' && ch <= '9') {
s = s * 10 + ch - '0', ch = getchar();
}
return s * w;
}
int n = read(), a[3000010], ans[3000010];
stack<int> s;
signed main() {
// freopen("in.in", "r", stdin);
// freopen("out.out", "w", stdout);
for (int i = 1; i <= n; i++) {
a[i] = read();
}
s.push(n);
for (int i = n - 1; i > 0; i--) {
while (!s.empty() && a[i] >= a[s.top()]) {
s.pop();
}
if (s.empty()) {
ans[i] = 0;
} else {
ans[i] = s.top();
}
s.push(i);
}
for (int i = 1; i <= n; i++) {
cout << a[i] << ' ';
}
return 0;
}