OIG XX - zkl

// https://szkopul.edu.pl/problemset/problem/VevdwvBD_QUR4Ajom1qPixVl/site/?key=statement

#include <bits/stdc++.h>

// #define GARY_DBG
#define GARY_LIB

constexpr int sizik = 1000 * 1001;

#define ar std::array

typedef std::vector<std::vector<int>> _kra;

void solve() {
    std::string s;
    std::cin >> s;

    std::map<int, std::vector<int>> m;
    int idx = 1, cnt = 0;
    for (const auto& c : s) {
        if (c == 'd') {
            if (cnt == 0) continue;
            cnt--;
            for (int i = 'z'; i >= 'a'; i--) {
                if (!m[i].empty()) {
                    m[i].pop_back();
                    break;
                }
            }
        } else {
            cnt++;
            m[c].push_back(idx);
            idx++;
        }
    }

    std::vector<std::pair<int, int>> v;
    for (const auto& [a, b] : m) {
        for (const auto& c : b) {
            v.push_back({c, a});
        }
    }

    std::sort(v.begin(), v.end());

    for (const auto& [_, c] : v) {
        std::cout << (char)c;
    }
    std::cout << '\n';
}

int32_t main() {
#ifndef GARY_DBG
    std::ios_base::sync_with_stdio(0);
    std::cin.tie(0);
    std::cout.tie(0);
#endif

    int t = 1;
    // std::cin >> t;

    for (; t > 0; t--) {
        solve();
    }

    return 0;
}