4307 2023. 03. 23 11:08:04 1478 Kígyózó szavak cpp17 Elfogadva 100/100 8ms 4832 KiB
#include <bits/stdc++.h>

using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int h, n;
    cin>>h>>n;
    vector<vector<long long>> dp(h+1, vector<long long>(27));
    //vector<int> tas

    for(int i=1; i<=26; i++){
        dp[1][i] = 1;
    }

    for(int i=2; i<=h; i++){
        for(int j = 1; j<=26; j++){
            if(j>1) dp[i][j] += dp[i-1][j-1];
            if(j<26) dp[i][j] += dp[i-1][j+1];
            dp[i][j]=min(dp[i][j],1000000000LL);
        }
    }

    for(int i=2; i<=h; i++){
        for(int j=1; j<=26; j++){
            dp[i][j] += dp[i-1][j];
        }
    }

    for(int i=1; i<=n; i++){
        string sol;
        int k, g = h;
        cin>>k;
        int ind = 1;
        while(k-dp[g][ind] > 0){
            k -= dp[g][ind];
            ++ind;
        }
        sol +='a' + ind - 1;
        //cout<<sol<<" ";
        //cout<<k<<": ";
        bool ok = 0;
        while(1){
            k--;
            g--;
            if(k <= 0) {
                break;
            }
            if(ind > 1 && ind < 26){
                if(k-dp[g][ind-1] > 0) {
                    sol+='a'+ind;
                    //cout<<sol<<" ";

                    k -= dp[g][ind-1];
                    //cout<<k<<endl;
                    ind++;
                }
                else{
                    sol+='a'+ind-2;
                    //cout<<sol<<" "<<k<<endl;
                    ind--;
                }
            }
            else if(ind == 1){
                sol+='b';
                ind++;
            }
            else if(ind == 26){
                sol+='y';
                ind--;
            }
        }
        cout<<sol<<endl;
    }
    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 100/100
1 Elfogadva 0/0 3ms 1832 KiB
2 Elfogadva 0/0 3ms 2052 KiB
3 Elfogadva 5/5 3ms 2280 KiB
4 Elfogadva 5/5 3ms 2488 KiB
5 Elfogadva 5/5 3ms 2688 KiB
6 Elfogadva 5/5 4ms 2748 KiB
7 Elfogadva 5/5 4ms 2880 KiB
8 Elfogadva 5/5 4ms 3096 KiB
9 Elfogadva 5/5 6ms 3504 KiB
10 Elfogadva 5/5 4ms 3568 KiB
11 Elfogadva 5/5 7ms 3904 KiB
12 Elfogadva 5/5 7ms 3936 KiB
13 Elfogadva 5/5 8ms 4148 KiB
14 Elfogadva 6/6 4ms 3728 KiB
15 Elfogadva 6/6 6ms 3980 KiB
16 Elfogadva 6/6 4ms 4008 KiB
17 Elfogadva 6/6 4ms 4212 KiB
18 Elfogadva 7/7 4ms 4172 KiB
19 Elfogadva 7/7 8ms 4832 KiB
20 Elfogadva 7/7 4ms 4424 KiB