#include <iostream> using namespace std; int n, l; string s, wyn; char c(int x) { if (x == 3) return 'a'; else if (x == 4) return 'c'; else if (x == 5) return 'z'; else return 'o'; } void f(int x, int y, int l1, int l2, string w, int k) { if (x - l1 >= 0 && y-l2 >=0) { k++; w += c(l1); if (k == n) { wyn = w; return; } for (int i = min(l1, x); i > 2; i--) f(x - l1, y-l2, i, 8-i, w, k); } } int main() { ios_base::sync_with_stdio(0); cin >> n >> s; for (int i = 0; i < 8 * n; i++) if (s[i] == '1') l++; //cout << l << " "<< 8 * n - l << "\n"; for (int i = 6; i > 2; i--) { f(l, 8*n-l, i, 8-i, "", 0); if (wyn.size()) break; } if (!wyn.size()) cout << "NIE"; else cout << wyn; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #include <iostream> using namespace std; int n, l; string s, wyn; char c(int x) { if (x == 3) return 'a'; else if (x == 4) return 'c'; else if (x == 5) return 'z'; else return 'o'; } void f(int x, int y, int l1, int l2, string w, int k) { if (x - l1 >= 0 && y-l2 >=0) { k++; w += c(l1); if (k == n) { wyn = w; return; } for (int i = min(l1, x); i > 2; i--) f(x - l1, y-l2, i, 8-i, w, k); } } int main() { ios_base::sync_with_stdio(0); cin >> n >> s; for (int i = 0; i < 8 * n; i++) if (s[i] == '1') l++; //cout << l << " "<< 8 * n - l << "\n"; for (int i = 6; i > 2; i--) { f(l, 8*n-l, i, 8-i, "", 0); if (wyn.size()) break; } if (!wyn.size()) cout << "NIE"; else cout << wyn; } |