Advertisement
Soupborsh

E

Jun 12th, 2025
16
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.84 KB | Source Code | 0 0
  1. #include <cstdio>
  2. #include <iostream>
  3. #include <string>
  4. #include <vector>
  5. // #include <algorithm>
  6. // #include <utility>
  7.  
  8. #define ULL unsigned long long
  9. #define LL long long
  10. #define uint unsigned int
  11. #define uchar unsigned char
  12.  
  13. // inline void thing(void) {
  14. //
  15. //   return;
  16. // }
  17.  
  18. int main(void) {
  19.   int n, k;
  20.   scanf("%u %u ", &n, &k);
  21.   std::string s0;
  22.   std::getline(std::cin, s0);
  23.   // putchar('-');
  24.   // putchar(s0[0]);
  25.   // const char *s00 = s0.c_str();
  26.   // putchar(s00[0]);
  27.   std::vector<char> s(n, 0);
  28.  
  29.   // putchar(s0[0]);
  30.   // putchar(s00[0]);
  31.  
  32.   std::vector<std::vector<uint>> a(26);
  33.  
  34.   for (int i = n - 1; i >= 0; i--) {
  35.     a[25 - (s0[i] - 'a')].push_back(i);
  36.     // printf("a[%d].push_back(%d)\n", 25 - (s0[i] - 'a'), i);
  37.   }
  38.   int i = 25;
  39.   // printf("a.size() = %lu\n", a.size());
  40.   while ((a.back().size() <= k) && (a.size() != 0)) {
  41.     // printf("a.back().size() -> %lu <= %d\n", a.back().size(), k);
  42.     k -= a.back().size();
  43.     a.pop_back();
  44.     i--;
  45.     // printf("a.size() = %lu\n", a.size());
  46.     // printf("k: %d, i: %d\n", k, i);
  47.   }
  48.   // printf("a.size() = %lu\n", a.size());
  49.   while (k != 0) {
  50.     a.back().pop_back();
  51.     k--;
  52.   }
  53.   if ((a.back().size() == 0) && (a.size() != 0)) {
  54.     a.pop_back();
  55.     i--;
  56.   }
  57.   // printf("a.size() = %lu\n", a.size());
  58.   if (i < 0) {
  59.     return 0;
  60.   }
  61.  
  62.   for (; i >= 0; i--) {
  63.     if (a[i].size() == 0) {
  64.       continue;
  65.     }
  66.     for (uint el : a[i]) {
  67.       s[el] = (25 - i) + 'a';
  68.     }
  69.   }
  70.  
  71.   for (uint i = 0; i < n; i++) {
  72.     if (s[i] != 0) {
  73.       putchar(s[i]);
  74.     }
  75.   }
  76.   putchar('\n');
  77.  
  78.   // printf("%s", s.c_st r());
  79.  
  80.   //   for (uint i = 0; i < n; i++) {
  81.   //     for (uint j = 0; j < n; j++) {
  82.   //
  83.   //     }
  84.   //   }
  85.  
  86.   // uint t;
  87.   // scanf("%u", &t);
  88.   // while (t--) {
  89.   //   thing();
  90.   // }
  91.  
  92.   return 0;
  93. }
  94.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement