Submission
Status:
PPPxx
Subtask/Task Score:
60/100
Score: 60
User: Whatthepoop
Problemset: ชั้นหนังสือ
Language: c
Time: 0.020 second
Submitted On: 2025-10-11 09:44:20
#include <stdio.h>
#include <string.h>
typedef struct {
int amount;
char name[31];
} Bookshelf;
void reverse(char str[]) {
int len = strlen(str);
int i = 0, j = len - 1;
while(i < j) {
char temp = str[i];
str[i] = str[j];
str[j] = temp;
i++;
j--;
}
}
int main(){
int L, N;
scanf("%d %d", &L, &N);
Bookshelf s[N];
for(int i = 0; i < N; i++){
scanf("%d %s", &s[i].amount, &s[i].name);
}
for(int i = 0; i < N-1; i++){
for(int j = 0; j < N-i-1; j++){
if(strcmp(s[j].name, s[j+1].name) > 0){
Bookshelf temp = s[j];
s[j] = s[j+1];
s[j+1] = temp;
}
}
}
char book[31][2500];
int size = 0;
for(int i = 0; i < N; i++){
while(s[i].amount > 0){
strcpy(book[size], s[i].name);
size++;
s[i].amount--;
}
}
for(int i = 0; i < size; i++){
int len = strlen(book[i]);
if(len < L){
char space[L+1];
space[0] = '\0';
while(len < L){
strcat(space, ".");
len++;
}
strcat(book[i], space);
}
}
for(int i = 0; i < size; i++){
if(i%2 == 1){
reverse(book[i]);
}
}
for(int i = 0; i < size; i++){
printf("+-");
}
printf("+\n");
for(int j = 0; j < L; j++){
for(int i = 0; i < size; i++){
printf("|%c", book[i][j]);
}
printf("|\n");
}
for(int i = 0; i < size; i++){
printf("+-");
}
printf("+\n");
return 0;
}