5337 2023. 04. 25 23:33:15 kohumark Kígyózó szavak cpp17 Wrong answer 5/100 29ms 3816 KiB
#include <iostream>
using namespace std;
int m=4; int c=0;
int h=0; int n=0;
unsigned long long t[26][1000];

void solveend(int x, int i, int a){
	if(x>0){
		if((unsigned)x<=t[i-1][h-a]&&i>0){cout << (char)(i+96); solveend(x-1,i-1,a+1);}
		else{
			cout << (char)(i+98);
			if(i>0) solveend(x-t[i-1][h-a]-1,i+1,a+1);
			else solveend(x-1,i+1,a+1);
		}
	}
		
}

void solve(int x){
	int i=0;
	while(t[i][h-1]<(unsigned)x){
		x-=t[i][h-1]; i++;
	}
	cout << (char)(i+97);
	solveend(x-1,i,2);
}

int main(){
	cin.tie(0); ios_base::sync_with_stdio(false);
	cin >> h >> n;
	for(int i=0; i<26; i++) t[i][0]=1;
	for(int i=1; i<25; i++) t[i][1]=3;
	t[0][1]=2; t[25][1]=2;	
	for(int j=2; j<h; j++){
		for(int i=0; i<26; i++){
			if(i==0) t[i][j]=t[i][j-1]+t[i+1][j-1]-t[i+1][j-2];
			else if(i==25) t[i][j]=t[i][j-1]+t[i-1][j-1]-t[i-1][j-2];
			else t[i][j]=t[i][j-1]+t[i-1][j-1]-t[i-1][j-2]+t[i+1][j-1]-t[i+1][j-2];
			cout << t[i][j];
		}
	}
	for(int i=0; i<n; i++){int x; cin >> x; solve(x); cout << '\n';}
}

Subtask Sum Test Verdict Time Memory
base 5/100
1 Wrong answer 0/0 3ms 2124 KiB
2 Wrong answer 0/0 3ms 2376 KiB
3 Accepted 5/5 3ms 2560 KiB
4 Wrong answer 0/5 3ms 2680 KiB
5 Wrong answer 0/5 3ms 2696 KiB
6 Wrong answer 0/5 3ms 2700 KiB
7 Wrong answer 0/5 3ms 2988 KiB
8 Wrong answer 0/5 3ms 2716 KiB
9 Wrong answer 0/5 13ms 2880 KiB
10 Wrong answer 0/5 12ms 3064 KiB
11 Wrong answer 0/5 16ms 3360 KiB
12 Wrong answer 0/5 17ms 3588 KiB
13 Wrong answer 0/5 29ms 3596 KiB
14 Wrong answer 0/6 8ms 3588 KiB
15 Wrong answer 0/6 16ms 3572 KiB
16 Wrong answer 0/6 10ms 3492 KiB
17 Wrong answer 0/6 8ms 3480 KiB
18 Wrong answer 0/7 9ms 3692 KiB
19 Wrong answer 0/7 28ms 3816 KiB
20 Wrong answer 0/7 12ms 3704 KiB