Submission #164366

#TimeUsernameProblemLanguageResultExecution timeMemory
164366_qVp_Tavan (COCI16_tavan)C++14
80 / 80
2 ms380 KiB
#include <bits/stdc++.h> using namespace std; const long long md = 505; long long n, m, k, x, cnt = 1; long long f[md]; string s, can[md], ans[md]; void findChar(long long p) { if (p == m - 1) { //cout << x << " " << cnt; ans[p] = can[p][x - cnt]; return ; } //cnt++; for(long long j = 0; j < k; j++) { if (cnt + f[m - p - 1] > x) { ans[p] = can[p][j]; findChar(p + 1); break; } else cnt += f[m - p - 1]; //cout << p << " " << cnt << endl; } } int main() { //freopen("test.in", "r", stdin); ios_base::sync_with_stdio(0); cin >> n >> m >> k >> x; cin >> s; for(long long i = 0; i < m; i++) { cin >> can[i]; sort(can[i].begin(), can[i].end()); } f[1] = k; for(int i = 2; i <= m; i++) { f[i] = min(x, f[i - 1] * k); } findChar(0); //cout << f[35] << endl; //cout << ans[35] << " "; //for(int i = 0; i < m; i++) // cout << ans[i] << " "; long long pos = 0; for(long long i = 0; i < n; i++) { if (s[i] == '#') { cout << ans[pos++]; } else cout << s[i]; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...