97242024-03-03 17:52:56csdavidKígyózó szavakcpp17Hibás válasz 82/1007ms3952 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--;
        if(x==1){
            if(utolso==1){
                vege.push_back('b');
            }
            else{
                vege.push_back(utolso+95);
            }
        }
        if(alma==1&&horiginal%2==1){
            vege.push_back('c');
        }



        cout << vege << endl;

    }





    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base82/100
1Elfogadva0/03ms1808 KiB
2Hibás válasz0/03ms2152 KiB
3Elfogadva5/53ms2292 KiB
4Elfogadva5/53ms2404 KiB
5Elfogadva5/53ms2588 KiB
6Elfogadva5/53ms2736 KiB
7Elfogadva5/54ms2796 KiB
8Elfogadva5/54ms2800 KiB
9Elfogadva5/54ms2928 KiB
10Elfogadva5/54ms3008 KiB
11Elfogadva5/56ms3136 KiB
12Elfogadva5/56ms3280 KiB
13Elfogadva5/57ms3360 KiB
14Elfogadva6/64ms3364 KiB
15Hibás válasz0/67ms3468 KiB
16Hibás válasz0/66ms3668 KiB
17Hibás válasz0/66ms3852 KiB
18Elfogadva7/74ms3836 KiB
19Elfogadva7/77ms3812 KiB
20Elfogadva7/76ms3952 KiB