#include<bits/stdc++.h>
using namespace std;
using intt=int32_t;
#define debug(n,m) cout<<"["<<#n<<"]->"<<n<<m
#define int long long
#define all(x) x.begin(),x.end()
#define pb push_back
const int N=2e6+5;
const int mod=1e9+7;
const int inf=2e9;
int a[N];
int n,m,k,x;
int exp(int k,int n) {
if (k<=1) return k;
int pp=1;
for (int i=1;i<=n;++i) {
pp*=k;
if (pp>x) return x+1;
}
return pp;
}
void levi() {
cin>>n>>m>>k>>x;
vector<vector<char>> v(m+1,vector<char>(k+1));
vector<int> p(m+1,0);
int buf=0;
string s;
cin>>s;
for (int i=1;i<=m;++i) {
for (int j=1;j<=k;++j){
cin>>v[i][j];
}
sort(all(v[i]));
int cur=0;
for (int j=1;j<=k;++j) {
int comp=(j-1)*exp(k,m-i);
//debug(comp,' ');
if (buf+comp<x) p[i]=j,cur=comp;
else break;
}
buf+=cur;
}
int cu=1;
for (char el : s) {
if (el=='#') cout<<v[cu][p[cu++]];
else cout<<el;
}
cout<<'\n';
}
int32_t main() {
ios_base::sync_with_stdio(0);
cin.tie(0);int tt=1;//cin>>tt;
while(tt--)levi();
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |