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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/*  Potyczki Algorytmiczne 2021 Runda 2 C Zakłócenia (ZAK)
    tsz
*/
#include <assert.h>
#include <ctype.h>
#include <limits.h>
#include <math.h>
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>

#ifndef TSDEBUG
#define NDEBUG 1
#endif

typedef int16_t i16;
typedef int32_t i32;

typedef unsigned char u8;

inline i32 Min(i32 a, i32 b)
{
    return a <= b ? a : b;
}

const i32 MaxLiczbaLiter = 100000;

u8 Litery[4] = { 'a', 't', 's', 'o' };

void WypiszLitery(i32 a, i32 t, i32 s, i32 o)
{
    for (i32 i = 0; i < a; i++) {
        putchar('a');
    }
    for (i32 i = 0; i < t; i++) {
        putchar('t');
    }
    for (i32 i = 0; i < s; i++) {
        putchar('s');
    }
    for (i32 i = 0; i < o; i++) {
        putchar('o');
    }
    putchar('\n');
}

int main()
{
    i32 LiczbaLiter;
    i32 LiczbaBitow = 0;
    scanf("%d\n", &LiczbaLiter);
    assert(1 <= LiczbaLiter);
    assert(LiczbaLiter <= MaxLiczbaLiter);

    i32 ch;
    for (i32 i = 0; i < LiczbaLiter * 8; i++)
    {
        ch = getchar();
        assert(ch == '0' || ch == '1');
        if (ch == '1') {
            LiczbaBitow++;
        }
    }

    LiczbaBitow -= 3 * LiczbaLiter;

    if (LiczbaBitow < 0) {
        printf("NIE\n");
        return 0;
    }
    if (LiczbaBitow < LiczbaLiter) {
        WypiszLitery(LiczbaLiter - LiczbaBitow, LiczbaBitow, 0, 0);
        return 0;
    }
    LiczbaBitow -= LiczbaLiter;
    if (LiczbaBitow < LiczbaLiter) {
        WypiszLitery(0, LiczbaLiter - LiczbaBitow, LiczbaBitow, 0);
        return 0;
    }
    LiczbaBitow -= LiczbaLiter;
    if (LiczbaBitow <= LiczbaLiter) {
        WypiszLitery(0, 0, LiczbaLiter - LiczbaBitow, LiczbaBitow);
        return 0;
    }

    printf("NIE\n");
    return 0;
}