Submission

Status:

PPPPP

Subtask/Task Score:

100/100

Score: 100

User: purihorharin

Problemset: ชั้นหนังสือ

Language: c

Time: 0.007 second

Submitted On: 2026-03-20 16:36:28

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct {
    size_t size;
    int amount;
    char name[31];
} st;

inline const st* reinterp_cast(const void* a) {
    return (const st*)a;
}

int cmp (const void* a, const void* b) {
    return strcmp(reinterp_cast(a)->name, reinterp_cast(b)->name);
}

int main () {
    int l, n;
    scanf("%d%d", &l, &n);
    st arr[n];
    for (int i = 0; i < n; i++) {
        scanf("%d %s", &arr[i].amount, arr[i].name);
        arr[i].size = strlen(arr[i].name);
    }
    qsort(arr, n, sizeof(st), cmp);
    putchar('+');
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < arr[i].amount; j++) {
            putchar('-');
            putchar('+');
        }
    }
    putchar('\n');

    for (int i = 0; i < l; i++) {
        int toggle = 0;
        putchar('|');
        for (int j = 0; j < n; j++) {
            for (int k = 0; k < arr[j].amount; k++) {
                int index = toggle ? l - i - 1 : i;
                putchar((index < arr[j].size) ? arr[j].name[index] : '.');
                putchar('|');
                toggle = !toggle;
            }
        }
        putchar('\n');
    }

    putchar('+');
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < arr[i].amount; j++) {
            putchar('-');
            putchar('+');
        }
    }
}