#include <cstdio> #include <utility> #include <string> #include <cmath> using namespace std; int main() { unsigned n; scanf("%u", &n); pair<unsigned, unsigned> bits; scanf("\n"); for (unsigned i = 0; i < 8 * n; ++i) { char b; scanf("%c", &b); if (b == '0') ++bits.first; else ++bits.second; } if (bits.first < 2 * n || bits.second < 3 * n) { printf("NIE"); return 0; } bits.first -= n; bits.second -= 2 * n; const unsigned cnt = bits.first >= bits.second ? (bits.first - bits.second) / 3 : (bits.second - bits.first) / 3; if (bits.first > bits.second) { printf("%s", string(cnt, 'a').c_str()); bits.first -= cnt * 4; bits.second -= cnt; } else if (bits.second > bits.first) { printf("%s", string(cnt, 'o').c_str()); bits.first -= cnt; bits.second -= cnt * 4; } while (bits.first != bits.second) { if (bits.first > bits.second) { printf("c"); bits.first -= 3; bits.second -= 2; } else if (bits.second > bits.first) { printf("g"); bits.first -= 2; bits.second -= 3; } } printf("%s", string((bits.first + bits.second) / 10, 'a').c_str()); printf("%s", string((bits.first + bits.second) / 10, 'o').c_str()); return 0; }
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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | #include <cstdio> #include <utility> #include <string> #include <cmath> using namespace std; int main() { unsigned n; scanf("%u", &n); pair<unsigned, unsigned> bits; scanf("\n"); for (unsigned i = 0; i < 8 * n; ++i) { char b; scanf("%c", &b); if (b == '0') ++bits.first; else ++bits.second; } if (bits.first < 2 * n || bits.second < 3 * n) { printf("NIE"); return 0; } bits.first -= n; bits.second -= 2 * n; const unsigned cnt = bits.first >= bits.second ? (bits.first - bits.second) / 3 : (bits.second - bits.first) / 3; if (bits.first > bits.second) { printf("%s", string(cnt, 'a').c_str()); bits.first -= cnt * 4; bits.second -= cnt; } else if (bits.second > bits.first) { printf("%s", string(cnt, 'o').c_str()); bits.first -= cnt; bits.second -= cnt * 4; } while (bits.first != bits.second) { if (bits.first > bits.second) { printf("c"); bits.first -= 3; bits.second -= 2; } else if (bits.second > bits.first) { printf("g"); bits.first -= 2; bits.second -= 3; } } printf("%s", string((bits.first + bits.second) / 10, 'a').c_str()); printf("%s", string((bits.first + bits.second) / 10, 'o').c_str()); return 0; } |