Submission

Status:

PPPPP

Score: 100

User: admin

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

Language: cpp

Time: 0.038 second

Submitted On: 2024-09-24 14:09:35

#include <stdio.h>

int strcmp (const char *p1, const char *p2)
{
  const unsigned char *s1 = (const unsigned char *) p1;
  const unsigned char *s2 = (const unsigned char *) p2;
  unsigned char c1, c2;
  do
    {
      c1 = (unsigned char) *s1++;
      c2 = (unsigned char) *s2++;
      if (c1 == '\0')
		return c1 - c2;
    }
  while (c1 == c2);
  return c1 - c2;
}

void swap(int *a, int *b) {
//	printf("%d %d\n", *a,*b);
	int temp;
	temp = *a;
	*a = *b;
	*b = temp;
}

char a[2005][35];
int z[2005];
char canva[35][20005];
int o[2005];

void sort(int S) {
	for (int i=0; i<S-1; i++) {
		for (int j=0; j<S-1; j++) {
			if (strcmp(a[o[j]], a[o[j+1]]) > 0) {
//				printf("%s %s\n", a[j], a[j+1]);
				swap(&o[j], &o[j+1]);
			}
		}
	}
}

int main() {
	for (int i=0; i<2000; i++) {
		o[i] = i;
	}
	int l, n;
	scanf("%d%d", &l, &n);
	for (int i=0; i<n; i++) {
		scanf("%d %s", &z[i], &a[i]);
	}
	
	for (int i=0; i<l; i++) {
		for (int j=0; j<20000; j++) {
			canva[i][j] = '.';
		}
	}
	
	sort(n);
	int V = 0;
	int H = 0;
	for (int i=0; i<n; i++) {
		for (int j=0; j<z[o[i]]; j++) {
			if (!V) {
				for (int k=0; a[o[i]][k] != 0; k++) {
					canva[k][H] = a[o[i]][k];
				}
			} else {
				for (int k=0; a[o[i]][k] != 0; k++) {
					canva[l-k-1][H] = a[o[i]][k];
				}
			}
			H++;
			V++;
			V%=2;
		}
	}
	printf("+");
	for (int j=0; j<H; j++) {
		printf("-+");
	}
	printf("\n");
	for (int i=0; i<l; i++) {
		printf("|");
		for (int j=0; j<H; j++) {
			printf("%c|",canva[i][j]);
		}
		printf("\n");
	}
	printf("+");
	for (int j=0; j<H; j++) {
		printf("-+");
	}
	printf("\n");
}