OIG III - szy

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

#include <iostream>

constexpr int sizik = 1000;

int w[sizik];
constexpr int m1 = 'Z' - 'A' + 1;

int32_t main() {
    std::ios_base::sync_with_stdio(0);
    std::cin.tie(0);
    std::cout.tie(0);

    int n;
    std::cin >> n;

    char c;
    std::cin >> c;

    std::string s;
    std::cin >> s;

    int maxi = 0;
    char r = 0;
    for (int i = 0; i < n; i++) {
        if (maxi < ++w[(int)s[i]]) {
            maxi = w[(int)s[i]];
            r = s[i];
        }
    }

    int nd = -((int)r - (int)c);

    for (auto& a : s) {
        int n1 = a - 'A' + nd;

        if (n1 < 0)
            n1 += m1;
        else if (n1 >= m1)
            n1 -= m1;

        n1 += 'A';

        a = (char)n1;
    }
    std::cout << s << '\n';

    return 0;
}