Submission
Status:
P----
Subtask/Task Score:
20/100
Score: 20
User: angpangSK
Problemset: ชั้นหนังสือ
Language: c
Time: 1.121 second
Submitted On: 2025-09-23 19:17:14
#include <stdio.h>
#include <string.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];
void sort_books(int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (strcmp(books[i], books[j]) > 0) {
char tmp[MAX_L + 1];
strcpy(tmp, books[i]);
strcpy(books[i], books[j]);
strcpy(books[j], tmp);
}
}
}
}
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);
}
}
sort_books(total);
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[L - 1 - i][col] = books[col][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;
}