记录编号 318042 评测结果 AAAAAAAAAA
题目名称 [NOIP 2008]立体图 最终得分 100
用户昵称 Gravatarkito 是否通过 通过
代码语言 C++ 运行时间 0.011 s
提交时间 2016-10-08 20:10:07 内存使用 0.77 MiB
显示代码纯文本
#include<cstdio>
using namespace std;
#define fcl	fclose(stdin);	fclose(stdout);	return 0
int n,m;
int N,M=0;
int A[60][60];
int Ans[350][350];
int flag[10][10];
int GetMax(int a,int b){
	if(a>b)	return a;
	return b;
}

void INIT(){
	for(int i=1;i<=M;++i){
		for(int j=1;j<=N;++j){
			Ans[i][j]=46;
		}
	}
	flag[5][0]=0;	flag[5][1]=0;	flag[5][2]=43;	flag[5][3]=45;	flag[5][4]=45;	flag[5][5]=45;	flag[5][6]=43;
	flag[4][0]=0;	flag[4][1]=47;	flag[4][2]=32;	flag[4][3]=32;	flag[4][4]=32;	flag[4][5]=47;	flag[4][6]=124;
	flag[3][0]=43;	flag[3][1]=45;	flag[3][2]=45;	flag[3][3]=45;	flag[3][4]=43;	flag[3][5]=32;	flag[3][6]=124;
	flag[2][0]=124;	flag[2][1]=32;	flag[2][2]=32;	flag[2][3]=32;	flag[2][4]=124;	flag[2][5]=32;	flag[2][6]=43;
	flag[1][0]=124;	flag[1][1]=32;	flag[1][2]=32;	flag[1][3]=32;	flag[1][4]=124;	flag[1][5]=47;
	flag[0][0]=43;	flag[0][1]=45;	flag[0][2]=45;	flag[0][3]=45;	flag[0][4]=43;
}

void AddNewSquare(int x,int y){
	for(int i=0;i<6;++i){
		for(int j=0;j<7;++j){
			if(flag[i][j]==0)	continue;
			Ans[x+i][y+j]=flag[i][j];
		}
	}
}

int main(){
	freopen("drawingu.in","r",stdin);
	freopen("drawingu.out","w",stdout);
	
	scanf("%d%d",&m,&n);
	for(int i=m;i>=1;--i){
		for(int j=1;j<=n;++j){
			scanf("%d",&A[i][j]);
			M=GetMax(M,2*i+1+3*A[i][j]);
		}
	}
	N=4*n+2*m+1;
	INIT();
	for(int i=m;i>=1;--i){
		for(int j=1;j<=n;++j){
			for(int k=1;k<=A[i][j];++k){
				AddNewSquare(2*i-1+3*(k-1), 2*i-1+4*(j-1));
			}
		}
	}
	for(int i=M;i>=1;--i){
		for(int j=1;j<=N;++j){
			printf("%c",Ans[i][j]);
		}
		puts("");
	}
	
//	while(1);
	return 0;
}