Submission

Status:
xPPxx

Score: 40

User: dwad

Problemset: ชั้นหนังสือ

Language: c

Time: 0.028 second

Submitted On: 2024-10-08 01:03:16

#include <stdio.h>
#include <string.h>

int main(){
    int nbook;
    int lbook;
    scanf("%d %d", &lbook, &nbook);
    char book[100*nbook][lbook+1];
    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;
}