/*
\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /
\ /\ / \ /\ / \ /\ / \ /\ / \ /\ / \ /\ / \ /\ / \ /\ / \ /\ / \ /\ /
\ \/ / \ \/ / \ \/ / \ \/ / \ \/ / \ \/ / \ \/ / \ \/ / \ \/ / \ \/ /
\ /\ / \ /\ / \ /\ / \ /\ / \ /\ / \ /\ / \ /\ / \ /\ / \ /\ / \ /\ /
\/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/
/\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\
/ \/ \ / \/ \ / \/ \ / \/ \ / \/ \ / \/ \ / \/ \ / \/ \ / \/ \ / \/ \
/ /\ \ / /\ \ / /\ \ / /\ \ / /\ \ / /\ \ / /\ \ / /\ \ / /\ \ / /\ \
/ \/ \ / \/ \ / \/ \ / \/ \ / \/ \ / \/ \ / \/ \ / \/ \ / \/ \ / \/ \
/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \
\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /
\ /\ / \ /\ / \ /\ / \ /\ / \ /\ / \ /\ / \ /\ / \ /\ / \ /\ / \ /\ /
\ \/ / \ \/ / \ \/ / \ \/ / \ \/ / \ \/ / \ \/ / \ \/ / \ \/ / \ \/ /
\ /\ / \ /\ / \ /\ / \ /\ / \ /\ / \ /\ / \ /\ / \ /\ / \ /\ / \ /\ /
\/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/
/\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\
/ \/ \ / \/ \ / \/ \ / \/ \ / \/ \ / \/ \ / \/ \ / \/ \ / \/ \ / \/ \
/ /\ \ / /\ \ / /\ \ / /\ \ / /\ \ / /\ \ / /\ \ / /\ \ / /\ \ / /\ \
/ \/ \ / \/ \ / \/ \ / \/ \ / \/ \ / \/ \ / \/ \ / \/ \ / \/ \ / \/ \
/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \/ /\ \
*/
#include <bits/stdc++.h>
#define fore(i, a, b) for (int i = (a), i##_last = (b); i < i##_last; ++i)
#define fort(i, a, b) for (int i = (a), i##_last = (b); i <= i##_last; ++i)
#define ford(i, a, b) for (int i = (a), i##_last = (b); i >= i##_last; --i)
#define fi first
#define se second
#define pb push_back
#define sz(x) ((int)(x).size())
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
using namespace std;
using ll = long long;
using ld = long double;
template<class A, class B> bool maxi(A &a, const B &b) {return (a < b) ? (a = b, true):false;};
template<class A, class B> bool mini(A &a, const B &b) {return (a > b) ? (a = b, true):false;};
typedef unsigned long long ull;
typedef pair<int, int> ii;
typedef vector<int> vi;
typedef vector<ii> vii;
typedef vector<vi> vvi;
typedef vector<vii> vvii;
const int maxN = 505;
const ll inf = 1e9 + 31082003;
ll product(ll x, ll y) {
return min(x * y, inf);
}
ll add(ll x, ll y) {
return min(x + y, inf);
}
int n, m, k, x;
string word, s[maxN];
ll power[maxN];
void rec(int x, int y, int z) {
if (x >= n) {
cout << '\n';
return;
}
if (word[x] != '#') {
cout << word[x];
rec(x + 1, y, z);
return;
}
for (const char &c : s[y])
if (z <= power[m - 1 - y]) {
cout << c;
rec(x + 1, y + 1, z);
return;
} else
z -= power[m - 1 - y];
}
int main() {
#ifdef LOCAL
freopen("input.INP", "r", stdin);
#endif // LOCAL
cin.tie(0) -> sync_with_stdio(0);
cout.tie(0);
cin >> n >> m >> k >> x >> word;
power[0] = 1;
fore(i, 0, m) {
cin >> s[i];
sort(all(s[i]));
power[i + 1] = product(power[i], k);
}
rec(0, 0, x);
return 0;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
340 KB |
Output is correct |
2 |
Correct |
1 ms |
340 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Correct |
0 ms |
344 KB |
Output is correct |
5 |
Correct |
0 ms |
340 KB |
Output is correct |
6 |
Correct |
1 ms |
340 KB |
Output is correct |
7 |
Correct |
1 ms |
340 KB |
Output is correct |
8 |
Correct |
1 ms |
340 KB |
Output is correct |
9 |
Correct |
1 ms |
340 KB |
Output is correct |
10 |
Correct |
1 ms |
340 KB |
Output is correct |