AC

许诺  •  24天前


#include <iostream>
#include <vector>
#include <stack>

using namespace std; int main() {

int N;
cin >> N;
vector<int> H(N + 1);
for (int i = 1; i <= N; ++i) {
    cin >> H[i];
}
vector<int> res(N + 1, 0);
stack<int> s;
for (int i = N; i >= 1; --i) {
    while (!s.empty() && H[s.top()] <= H[i]) {
        s.pop();
    }
    if (!s.empty()) {
        res[i] = s.top();
    } else {
        res[i] = 0;
    }
    s.push(i);
}
for (int i = 1; i <= N; ++i) {
    cout << res[i] << endl;
}
return 0;

}


评论:

请先登录,才能进行评论