제출 #1305661

#제출 시각아이디문제언어결과실행 시간메모리
1305661mikasaTavan (COCI16_tavan)C++20
80 / 80
1 ms576 KiB
#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 timeMemoryGrader output
Fetching results...