Submission
Status:
P----
Subtask/Task Score:
20/100
Score: 20
User: angpangSK
Problemset: ชั้นหนังสือ
Language: c
Time: 0.023 second
Submitted On: 2025-09-23 19:27:17
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_L 30
#define MAX_N 2000
#define MAX_K 10
#define MAX_BOOKS (MAX_N * MAX_K)
char books[MAX_BOOKS][MAX_L + 1];
char grid[MAX_L][MAX_BOOKS];
int cmp(const void *a, const void *b) {
return strcmp((const char *)a, (const char *)b);
}
int main() {
int L, N;
scanf("%d %d", &L, &N);
int total = 0;
for (int i = 0; i < N; i++) {
int K;
char S[MAX_L + 1];
scanf("%d %s", &K, S);
for (int k = 0; k < K; k++)
strcpy(books[total++], S);
}
qsort(books, total, sizeof(books[0]), cmp);
for (int r = 0; r < L; r++)
for (int c = 0; c < total; c++)
grid[r][c] = ' ';
for (int col = 0; col < total; col++) {
int len = strlen(books[col]);
if (col % 2 == 0) {
for (int i = 0; i < len && i < L; i++)
grid[i][col] = books[col][i];
} else {
for (int i = 0; i < len && i < L; i++)
grid[i][col] = books[col][len - 1 - i];
}
}
printf("+");
for (int i = 0; i < total; i++) printf("-+");
printf("\n");
for (int r = 0; r < L; r++) {
printf("|");
for (int c = 0; c < total; c++)
printf("%c|", grid[r][c]);
printf("\n");
}
printf("+");
for (int i = 0; i < total; i++) printf("-+");
printf("\n");
return 0;
}