CCCPaste

Untitled

#include 
#include 
#include 
using namespace std;
typedef long long ll;
ll power(ll a, ll b, ll x){
    ll result = 1;
    while(b > 0) {
        if(result * a > x) {
            result *= a;
            break;
        }
        result *= a;
        b--;
    }
    return result;
}
int main() {
    ll n, m, k, x;
    cin >> n >> m >> k >> x;
    vector v;
    string S;
    cin >> S;
    
    for(int i = 0; i < m; i++) {
        string tmp;
        cin >> tmp;
        sort(tmp.begin(), tmp.end());
        v.push_back(tmp);
    }
    vector result;
    for(ll i = 0; i < m; i++) {
        int j = 0;
        ll k_power = power(k, m - i - 1, x);
        ll sum = 0;
        while(sum + k_power < x) {
            sum += k_power;
            j++;
        }
        x -= sum;
        result.push_back(v[i][j]);
    }
    int idx = 0;
    for(int i = 0; i < S.size(); i++) {
        if(S[i] == '#') {
            S[i] = result[idx];
            idx++;
        }
    }
    cout << S << endl;
    return 0;
}