답안 #598377

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
598377 2022-07-18T08:10:36 Z nguyen31hoang08minh2003 Tavan (COCI16_tavan) C++14
80 / 80
1 ms 344 KB
/*
\     \/     /\     \/     /\     \/     /\     \/     /\     \/     /\     \/     /\     \/     /\     \/     /\     \/     /\     \/     /
 \    /\    /  \    /\    /  \    /\    /  \    /\    /  \    /\    /  \    /\    /  \    /\    /  \    /\    /  \    /\    /  \    /\    /
  \   \/   /    \   \/   /    \   \/   /    \   \/   /    \   \/   /    \   \/   /    \   \/   /    \   \/   /    \   \/   /    \   \/   /
   \  /\  /      \  /\  /      \  /\  /      \  /\  /      \  /\  /      \  /\  /      \  /\  /      \  /\  /      \  /\  /      \  /\  /
    \/  \/        \/  \/        \/  \/        \/  \/        \/  \/        \/  \/        \/  \/        \/  \/        \/  \/        \/  \/
    /\  /\        /\  /\        /\  /\        /\  /\        /\  /\        /\  /\        /\  /\        /\  /\        /\  /\        /\  /\
   /  \/  \      /  \/  \      /  \/  \      /  \/  \      /  \/  \      /  \/  \      /  \/  \      /  \/  \      /  \/  \      /  \/  \
  /   /\   \    /   /\   \    /   /\   \    /   /\   \    /   /\   \    /   /\   \    /   /\   \    /   /\   \    /   /\   \    /   /\   \
 /    \/    \  /    \/    \  /    \/    \  /    \/    \  /    \/    \  /    \/    \  /    \/    \  /    \/    \  /    \/    \  /    \/    \
/     /\     \/     /\     \/     /\     \/     /\     \/     /\     \/     /\     \/     /\     \/     /\     \/     /\     \/     /\     \
\     \/     /\     \/     /\     \/     /\     \/     /\     \/     /\     \/     /\     \/     /\     \/     /\     \/     /\     \/     /
 \    /\    /  \    /\    /  \    /\    /  \    /\    /  \    /\    /  \    /\    /  \    /\    /  \    /\    /  \    /\    /  \    /\    /
  \   \/   /    \   \/   /    \   \/   /    \   \/   /    \   \/   /    \   \/   /    \   \/   /    \   \/   /    \   \/   /    \   \/   /
   \  /\  /      \  /\  /      \  /\  /      \  /\  /      \  /\  /      \  /\  /      \  /\  /      \  /\  /      \  /\  /      \  /\  /
    \/  \/        \/  \/        \/  \/        \/  \/        \/  \/        \/  \/        \/  \/        \/  \/        \/  \/        \/  \/
    /\  /\        /\  /\        /\  /\        /\  /\        /\  /\        /\  /\        /\  /\        /\  /\        /\  /\        /\  /\
   /  \/  \      /  \/  \      /  \/  \      /  \/  \      /  \/  \      /  \/  \      /  \/  \      /  \/  \      /  \/  \      /  \/  \
  /   /\   \    /   /\   \    /   /\   \    /   /\   \    /   /\   \    /   /\   \    /   /\   \    /   /\   \    /   /\   \    /   /\   \
 /    \/    \  /    \/    \  /    \/    \  /    \/    \  /    \/    \  /    \/    \  /    \/    \  /    \/    \  /    \/    \  /    \/    \
/     /\     \/     /\     \/     /\     \/     /\     \/     /\     \/     /\     \/     /\     \/     /\     \/     /\     \/     /\     \
*/
#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