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('+');
}
}
}