#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main() {
int n, m, x, k; cin >> n >> m >> x >> k;
string s; cin >> s; vector<string> A(m);
vector<char> B(x);
for (int i = 0; i < m; i++) {
for (int j = 0; j < x; j++) {
cin >> B[j];
}
sort(B.begin(), B.end());
string q = "";
for (int j = 0; j < x; j++) {
q = q + B[j];
}
A[i] = q;
}
reverse(A.begin(), A.end()); bool can = false;
int sum = 1; vector<char> C;
for (int i = 0; i < m; i++) {
// cout << A[i] << " ";
if (i != 0) {
if (can) {
C.push_back(A[i][0]); continue;
}
sum *= x;
if (sum >= k) {
can = true;
C.push_back(A[i][0]); continue;
}
}
int y = ceil((double)k/(double)sum);
y = y % x;
// cout << sum << " " << y << "\n";
if (y != 0) {
// cout << A[i][y - 1] << " ";
C.push_back(A[i][y - 1]);
}
else {
// cout << A[i][x - 1] << " ";
C.push_back(A[i][x - 1]);
}
}
reverse(C.begin(), C.end()); int l = 0;
for (int i = 0; i < n; i++) {
if (s[i] == '#') {
cout << C[l]; l++;
}
else {
cout << s[i];
}
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |