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