Submission

Status:
xPPxx

Score: 40

User: admin

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

Language: cpp

Time: 0.051 second

Submitted On: 2024-10-08 16:25:52

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

char book[20005][1005];
int cbook[1005];
int main(){
	int nbook;
	int lbook;
	scanf("%d %d", &lbook, &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;
}