Submission
Status:
xPPxx
Score: 40
User: dwad
Problemset: ชั้นหนังสือ
Language: c
Time: 0.026 second
Submitted On: 2024-10-08 00:15:11
#include <stdio.h>
#include <string.h>
int main(){
int nbook;
int lbook;
scanf("%d %d", &lbook, &nbook);
char book[100*nbook][lbook];
int cbook[nbook];
for(int i=0;i<nbook;i++){
scanf("%d %s", &cbook[i], &book[i]);
}
int sumbook=0;
for(int i=0;i<nbook;i++){
sumbook+=cbook[i];
}
int bookcount=0;
for(int i=0;i<nbook;i++){
for(int j=1;j<cbook[i];j++){
strcpy(book[nbook+bookcount],book[i]);
bookcount++;
}
}
for(int i=0;i<sumbook-1;i++){
for(int j=0;j<sumbook-i-1;j++){
char freebook[lbook];
strcpy(freebook,book[j]);
for(int k=0;k<strlen(book[j]);k++){
if((int)book[j][k]>(int)book[j+1][k]){
strcpy(book[j],book[j+1]);
strcpy(book[j+1],freebook);
break;
}
else if((int)book[j][k]==(int)book[j+1][k]){
}
else {break;}
}
}
}
char grid[lbook+2][2*sumbook+1];
for(int i=0;i<lbook+2;i++){
for(int j=0;j<2*sumbook+1;j++){
grid[i][j]='|';
if((i==0||i==lbook+1)&&j%2==0){
grid[i][j]='+';
}
if((i==0||i==lbook+1)&&j%2==1){
grid[i][j]='-';
}
}
}
for(int i=0;i<sumbook;i++){
if(i%2==0){
for(int j=0;j<strlen(book[i]);j++){
if(j+1>lbook){break;}
grid[j+1][2*i+1]=book[i][j];
}
for(int j=strlen(book[i]);j<lbook;j++){
grid[j+1][2*i+1]='.';
}
}
if(i%2==1){
for(int j=0;j<strlen(book[i]);j++){
if(lbook-j<1){break;}
grid[lbook-j][2*i+1]=book[i][j];
}
for(int j=strlen(book[i]);j<lbook;j++){
grid[lbook-j][2*i+1]='.';
}
}
}
for(int i=0;i<lbook+2;i++){
for(int j=0;j<2*sumbook+1;j++){
printf("%c", grid[i][j]);
}
printf("\n");
}
return 0;
}