9725 2024. 03. 03 18:25:46 csdavid Kígyózó szavak cpp17 Elfogadva 100/100 8ms 4380 KiB
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    //ofstream fout("enyem.txt");
    //ifstream fin("be.txt");
    int h, n;
    int utolso=0, aorb=0;
    cin >> h;
    cin >> n;
    int horiginal=h;
    while(h>33){

        aorb=1;
        h--;
        if(h>33){
            aorb=2;
            h--;
        }

    }




    long long a[h][28];
    for(auto& alma:a[1])
    {
        alma=1;
    }
    for(auto& alma:a[0])
    {
        alma=1;
    }
    for(int i=0; i<h; i++){
        a[i][0]=0;
        a[i][27]=0;
    }


    for(int i=1; i<h; i++){
        for(int j=1; j<27; j++){
            a[i][j]=a[i-1][j-1]+a[i-1][j+1];
        }
    }
    for(int i=1; i<h; i++){
        for(int j=1; j<27; j++){
            a[i][j]+=a[i-1][j];
        }
    }
    /*for(auto& xy:a){
        for(auto& yx:xy){
            cout << yx << " ";
        }
        cout << '\n';
    }
*/



    int x;
    int sor = h-1, i;
    string vege;
    for(int it=0; it<n; it++){
        cin >> x;
        int alma=0;
        if(x==horiginal+1){
            alma=1;
        }
        vege.clear();
        utolso=aorb;
        sor=h-1;
        if(utolso==0){
            utolso=1;
            while(x>a[sor][utolso]){
                x-=a[sor][utolso];
                utolso++;
            }
            //vege.push_back(utolso+96);
        }
        else{
            sor=horiginal-1;
            while(sor>31&&x>0){
                x--;
                sor--;
                vege.push_back('a');
                utolso=1;
                if(sor>31&&x>0){
                    x--;
                    sor--;
                    vege.push_back('b');
                    utolso=2;
                }
            }
            x++;
            sor+=1;
            vege.pop_back();
            //cout << vege << endl;
        }
        sor--;

         // cout << "sor: " << sor << endl << "utolso: " << utolso << endl << "x: " << x << endl<< "a[sor][utolso-1] = " << a[sor][utolso-1] << endl << endl;

        while(x>1&&sor>0){

            if(a[sor][utolso-1]>=x-1){
                x--;
                vege.push_back(utolso+96);
                //x-=a[sor][utolso];
                utolso--;
            }
            else{
                vege.push_back(utolso+96);
                x-=a[sor][utolso-1];
                x--;
                utolso++;
            }
            sor--;
            //cout << "sor: " << sor << endl << "utolso: " << utolso << endl << "x: " << x << endl<< "a[sor][utolso-1] = " << a[sor][utolso-1] << endl << endl;


        }
        vege.push_back(utolso+96);
        x--;
        //cout << "x = " << x << endl << "sor = " << sor << "\n\n";
        if(x==1){
            if(utolso==1){
                vege.push_back('b');
            }
            else{
                vege.push_back(utolso+95);
            }
        }
        else if(x==2){
            vege.push_back(utolso+97);
        }
        /*if(alma==1&&horiginal%2==1){
            vege.push_back('c');
        }*/



        cout << vege << endl;

    }





    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 100/100
1 Elfogadva 0/0 3ms 1684 KiB
2 Elfogadva 0/0 3ms 1932 KiB
3 Elfogadva 5/5 3ms 2136 KiB
4 Elfogadva 5/5 3ms 2144 KiB
5 Elfogadva 5/5 3ms 2380 KiB
6 Elfogadva 5/5 4ms 2352 KiB
7 Elfogadva 5/5 4ms 2604 KiB
8 Elfogadva 5/5 4ms 2696 KiB
9 Elfogadva 5/5 4ms 2912 KiB
10 Elfogadva 5/5 4ms 2996 KiB
11 Elfogadva 5/5 6ms 3236 KiB
12 Elfogadva 5/5 6ms 3448 KiB
13 Elfogadva 5/5 8ms 3600 KiB
14 Elfogadva 6/6 4ms 3796 KiB
15 Elfogadva 6/6 6ms 3772 KiB
16 Elfogadva 6/6 6ms 3748 KiB
17 Elfogadva 6/6 4ms 3764 KiB
18 Elfogadva 7/7 4ms 3948 KiB
19 Elfogadva 7/7 8ms 4380 KiB
20 Elfogadva 7/7 4ms 4244 KiB