본문 바로가기

Algorithm

C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 2812번:크게 만들기 답

반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <algorithm>
#include <cmath>
#include <functional>
using namespace std;
char str[500001];
char result[500001];
int main() {
    ios::sync_with_stdio(false);
    int N, K;
    cin >> N >> K >> str;
    int L = N - K;
    int len = 0;
    for (int i = 0; i < N; ++i) {
        if (N - i <= L - len) {
            result[len++= str[i];
        }
        else {
            char *ptr = upper_bound(result + max(L - (N - i), 0), result + len, str[i], greater<char>());
            int idx = ptr - result;
            if (idx >= L) continue;
            result[idx] = str[i];
            len = idx + 1;
        }
    }
    result[len] = 0;
    cout << result << endl;
}
cs