/* 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; }
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; } |