Submission
Status:
PPPPP
Subtask/Task Score:
100/100
Score: 100
User: wasupum
Problemset: ชั้นหนังสือ
Language: c
Time: 0.008 second
Submitted On: 2025-10-18 23:26:51
#include <stdio.h>
#include <string.h>
int cmp(const void* a, const void* b){
return strcmp((char*)a,(char*)b);
}
int main(void){
int L, N;
scanf("%d %d",&L,&N);
char book[N*10][35];
int allk = 0;
int index = 0 ;
for(int i = 0 ; i < N ; i++){
int k ;
char temp[35];
scanf("%d %s",&k,temp);
for(int j = 0 ; j < k ;j++){
strcpy(book[index],temp);
index++;
}
allk += k;
}
qsort(book,allk,sizeof(book[0]),cmp);
char shelf[35][allk*2+2];
for(int i = 0 ; i <= L+1; i++){
for(int j = 0 ; j <= allk*2; j++){
if(j%2 == 0) shelf[i][j]='|';
else shelf[i][j]='.';
if(i == 0 || i == L+1){
if(j%2==0) shelf[i][j]='+';
else shelf[i][j]='-';
}
}
shelf[i][allk*2+1]='\0';
}
for(int i = 0 ; i < L ; i++){
for(int j = 0 ; j < allk ; j++){
if(j%2==1){
size_t len = strlen(book[j]);
if(i >= L-len)shelf[i+1][(j*2)+1] = book[j][L-i-1];
}else{
if(i < strlen(book[j]))shelf[i+1][(j*2)+1] = book[j][i];
}
}
}
for(int i = 0 ; i <= L+1 ; i++){
printf("%s\n",shelf[i]);
}
return 0;
}