diff --git a/Luogu/problem/P5788/P5788.cpp b/Luogu/problem/P5788/P5788.cpp new file mode 100644 index 00000000..2eb25715 --- /dev/null +++ b/Luogu/problem/P5788/P5788.cpp @@ -0,0 +1,24 @@ +#include + +using namespace std; + +int n, a[3000005], f[3000005]; +stack st; + +int main() { + std::ios::sync_with_stdio(false); + cin >> n; + for (int i = 1; i <= n; i++) { + cin >> a[i]; + } + for (int i = n; i >= 1; i--) { + while (!st.empty() && a[st.top()] <= a[i]) st.pop(); + f[i] = st.empty() ? 0 : st.top(); + st.push(i); + } + for (int i = 1; i <= n; i++) { + cout << f[i] << ' '; + } + cout << endl; + return 0; +}