1274 2022. 03. 29 15:42:41 FulopMate Kígyózó szavak cpp14 Elfogadva 100/100 12ms 2548 KiB
#include <bits/stdc++.h>

using namespace std;

//#define __TEST_CASE_TEXT
#define __TEST_CASE_BEFORE "Case #"
#define __TEST_CASE_AFTER ": "

#define ll long long
#define all(c) (c).begin(), (c).end()
#define MIN(a, b) ((a) = min((a), (b)))
#define MAX(a, b) ((a) = max((a), (b)))

const ll MOD = 1e9+7;
const int abc = 'z'-'a'+1;

vector<ll> v[abc];

string ans;

void p(ll n, int maxh, int last = -2){
    if(n == 0){
        ans = "";
        return;
    }
    int j = 0;
    if(last == -2){
        while(v[j][maxh] < n){
            n -= v[j][maxh];
            j++;
        }
    } else {
        if(last == 0){
            j = 1;
        } else {
            j = last-1;
            if(v[j][maxh] < n){
                n -= v[j][maxh];
                j = last+1;
            }
        }
    }
    p(n-1, maxh-1, j);
    ans += 'a'+j;
}

void solve(){
    int n, m; cin>>n>>m;
    for(auto &i: v){i.assign(n+1, 0); i[1] = 1;}
    for(int i = 2; i <= n; i++){
        v[0][i] = v[1][i-1];
        v[abc-1][i] = v[abc-2][i-1];
        for(char j = 1; j < abc-1; j++){
            v[j][i] = min((ll)1e10, v[j-1][i-1] + v[j+1][i-1]);
        }
    }
    for(int j = 0; j < abc; j++){
        for(int i = 2; i <= n; i++){
            v[j][i] += v[j][i-1];
            MIN(v[j][i], (ll)1e10);
        }
    }
    while(m--){
        ll a; cin>>a;
        p(a, n);
        reverse(all(ans));
        cout<<ans<<endl;
    }
}

int main(){
    ios_base::sync_with_stdio(0); cin.tie(0);
    int _t;
    _t = 1;
    for(int _i = 0; _i < _t; _i++){
        #ifdef __TEST_CASE_TEXT
        cout<<__TEST_CASE_BEFORE<<_i+1<<__TEST_CASE_AFTER;
        #endif
        solve();
    }
    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 100/100
1 Elfogadva 0/0 2ms 1868 KiB
2 Elfogadva 0/0 1ms 1864 KiB
3 Elfogadva 5/5 1ms 1924 KiB
4 Elfogadva 5/5 1ms 1928 KiB
5 Elfogadva 5/5 1ms 1928 KiB
6 Elfogadva 5/5 2ms 1936 KiB
7 Elfogadva 5/5 3ms 1964 KiB
8 Elfogadva 5/5 3ms 1956 KiB
9 Elfogadva 5/5 6ms 2168 KiB
10 Elfogadva 5/5 4ms 2192 KiB
11 Elfogadva 5/5 6ms 2240 KiB
12 Elfogadva 5/5 7ms 2304 KiB
13 Elfogadva 5/5 8ms 2508 KiB
14 Elfogadva 6/6 3ms 2128 KiB
15 Elfogadva 6/6 7ms 2268 KiB
16 Elfogadva 6/6 6ms 2244 KiB
17 Elfogadva 6/6 4ms 2240 KiB
18 Elfogadva 7/7 4ms 2264 KiB
19 Elfogadva 7/7 12ms 2548 KiB
20 Elfogadva 7/7 6ms 2300 KiB