Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <iostream>
- #include <string>
- #include <vector>
- // #include <algorithm>
- // #include <utility>
- #define ULL unsigned long long
- #define LL long long
- #define uint unsigned int
- #define uchar unsigned char
- // inline void thing(void) {
- //
- // return;
- // }
- int main(void) {
- int n, k;
- scanf("%u %u ", &n, &k);
- std::string s0;
- std::getline(std::cin, s0);
- // putchar('-');
- // putchar(s0[0]);
- // const char *s00 = s0.c_str();
- // putchar(s00[0]);
- std::vector<char> s(n, 0);
- // putchar(s0[0]);
- // putchar(s00[0]);
- std::vector<std::vector<uint>> a(26);
- for (int i = n - 1; i >= 0; i--) {
- a[25 - (s0[i] - 'a')].push_back(i);
- // printf("a[%d].push_back(%d)\n", 25 - (s0[i] - 'a'), i);
- }
- int i = 25;
- // printf("a.size() = %lu\n", a.size());
- while ((a.back().size() <= k) && (a.size() != 0)) {
- // printf("a.back().size() -> %lu <= %d\n", a.back().size(), k);
- k -= a.back().size();
- a.pop_back();
- i--;
- // printf("a.size() = %lu\n", a.size());
- // printf("k: %d, i: %d\n", k, i);
- }
- // printf("a.size() = %lu\n", a.size());
- while (k != 0) {
- a.back().pop_back();
- k--;
- }
- if ((a.back().size() == 0) && (a.size() != 0)) {
- a.pop_back();
- i--;
- }
- // printf("a.size() = %lu\n", a.size());
- if (i < 0) {
- return 0;
- }
- for (; i >= 0; i--) {
- if (a[i].size() == 0) {
- continue;
- }
- for (uint el : a[i]) {
- s[el] = (25 - i) + 'a';
- }
- }
- for (uint i = 0; i < n; i++) {
- if (s[i] != 0) {
- putchar(s[i]);
- }
- }
- putchar('\n');
- // printf("%s", s.c_st r());
- // for (uint i = 0; i < n; i++) {
- // for (uint j = 0; j < n; j++) {
- //
- // }
- // }
- // uint t;
- // scanf("%u", &t);
- // while (t--) {
- // thing();
- // }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement