10063 | 2024. 03. 25 21:00:23 | szil | Kígyózó szavak | cpp17 | Elfogadva 100/100 | 8ms | 3880 KiB |
#include <bits/stdc++.h>
using ll = long long;
using namespace std;
const ll INF = 1e10;
int h, t;
ll cnt[1001][26];
void solve() {
ll k; cin >> k;
string ans;
while (k >= 1) {
for (int i = 0; i < 26; i++) {
if (!ans.empty() && abs(i-(ans.back()-'a')) != 1) continue;
if (cnt[h-ans.size()][i] >= k) {
ans += char('a'+i);
k--;
break;
} else {
k -= cnt[h-ans.size()][i];
}
}
}
cout << ans << "\n";
}
int main() {
ios_base::sync_with_stdio(0); cin.tie(0);
cin >> h >> t;
for (int i = 1; i <= h; i++) {
for (int j = 0; j < 26; j++) {
cnt[i][j] = 1;
if (j != 0) cnt[i][j] += cnt[i-1][j-1];
if (j != 25) cnt[i][j] += cnt[i-1][j+1];
cnt[i][j] = min(cnt[i][j], INF);
}
}
while (t--) {
solve();
}
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 | 2264 KiB | |||
4 | Elfogadva | 5/5 | 3ms | 2444 KiB | |||
5 | Elfogadva | 5/5 | 3ms | 2660 KiB | |||
6 | Elfogadva | 5/5 | 3ms | 2872 KiB | |||
7 | Elfogadva | 5/5 | 3ms | 2968 KiB | |||
8 | Elfogadva | 5/5 | 3ms | 3092 KiB | |||
9 | Elfogadva | 5/5 | 6ms | 3452 KiB | |||
10 | Elfogadva | 5/5 | 4ms | 3420 KiB | |||
11 | Elfogadva | 5/5 | 6ms | 3492 KiB | |||
12 | Elfogadva | 5/5 | 6ms | 3508 KiB | |||
13 | Elfogadva | 5/5 | 8ms | 3768 KiB | |||
14 | Elfogadva | 6/6 | 4ms | 3376 KiB | |||
15 | Elfogadva | 6/6 | 6ms | 3720 KiB | |||
16 | Elfogadva | 6/6 | 4ms | 3636 KiB | |||
17 | Elfogadva | 6/6 | 4ms | 3612 KiB | |||
18 | Elfogadva | 7/7 | 4ms | 3628 KiB | |||
19 | Elfogadva | 7/7 | 8ms | 3880 KiB | |||
20 | Elfogadva | 7/7 | 4ms | 3652 KiB |