ABC372 D問題〜stackでいい感じに〜

ABC

解説動画

コード

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define rep(i, n) for (int i = 0; i < (n); ++i)

int main() {
    int n;
    cin >> n;
    vector h(n);
    rep(i, n) cin >> h[i];

    reverse(h.begin(), h.end());

    vector ans;
    stack stc;

    rep(i, n) {
        ans.push_back(stc.size());

        while (!stc.empty() && stc.top() < h[i]) {
            stc.pop();
        }

        stc.push(h[i]);
    }

    reverse(ans.begin(), ans.end());

    for (auto e : ans) cout << e << " ";
    cout << endl;
    return 0;
}

使っていた資料

コメント