168252025-05-13 18:14:05AblablablaKígyózó szavakcpp17Accepted 100/10020ms1428 KiB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

const ll INF = 1e13 + 7;

int main(){
    ll m, n;
    cin >> m >> n;

    vector<ll> alap(n);
    ll maxi = 0;
    for(ll &x :alap){
        cin >> x;
        maxi = max(maxi, x);
    }

    vector<vector<ll>> dp(26 + 2, vector<ll>(m + 1, 0));
    for(ll i = 1; i <= 26; i++){
        dp[i][m] = 1;
    }
    for(ll j = m - 1; j >= 1; j--){
        for(ll i = 1; i <= 26; i++){
            dp[i][j] = dp[i - 1][j + 1] + dp[i + 1][j + 1] + 1;
            dp[i][j] = min(dp[i][j], INF);
        }
    }

    for(ll i = 0; i < n; i++){
        ll a = alap[i];

        ll x = 1, y = 1;
        while(a > dp[x][y]){
            a -= dp[x][y];
            x++;
        }

        vector<ll> ans;

        while(1){
            ans.push_back(x);
            if(a == 1){
                break;
            }

            a--;
            if(a > dp[x - 1][y + 1]){
                a -= dp[x - 1][y + 1];
                x++;
                y++;
            } else{
                x--;
                y++;
            }

            assert(y <= m);
        }

        for(ll x : ans){
            cout << (char)(x - 1 + 'a');
        }
        cout << "\n";
    }
}
SubtaskSumTestVerdictTimeMemory
base100/100
1Accepted0/01ms316 KiB
2Accepted0/01ms508 KiB
3Accepted5/51ms508 KiB
4Accepted5/51ms316 KiB
5Accepted5/51ms316 KiB
6Accepted5/51ms316 KiB
7Accepted5/51ms316 KiB
8Accepted5/52ms316 KiB
9Accepted5/58ms820 KiB
10Accepted5/58ms564 KiB
11Accepted5/510ms924 KiB
12Accepted5/510ms740 KiB
13Accepted5/520ms1276 KiB
14Accepted6/64ms616 KiB
15Accepted6/610ms944 KiB
16Accepted6/67ms664 KiB
17Accepted6/66ms524 KiB
18Accepted7/77ms600 KiB
19Accepted7/718ms1428 KiB
20Accepted7/78ms616 KiB