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;
}