记录编号 |
318042 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2008]立体图 |
最终得分 |
100 |
用户昵称 |
kito |
是否通过 |
通过 |
代码语言 |
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;
}