100分,还行吧
#include<bits/stdc++.h>
using namespace std;
char G[105][105];
int m,n,q;
void line(){
int x1,y1,x2,y2,i;
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
if(x1>x2)
swap(x1,x2);
if(y1>y2)
swap(y1,y2);
char ch='-';
if(x1==x2)
ch='|';
if(ch=='-'){//x变,y不变 行不变,列变
for(i=x1;i<=x2;i++){
if(G[y1][i]=='|')
G[y1][i]='+';
else if(G[y1][i]!='+')
G[y1][i]='-';
}
}
else{
for(i=y1;i<=y2;i++){
if(G[i][x1]=='-')
G[i][x1]='+';
else if(G[i][x1]!='+')
G[i][x1]='|';
}
}
}
void fun(int x,int y,int ch){
if(x<0||x>=m||y<0||y>=n||G[y][x]=='-'||G[y][x]=='|'||G[y][x]=='+'||G[y][x]==ch)
return;
else{
G[y][x]=ch;
fun(x+1,y,ch);
fun(x-1,y,ch);
fun(x,y+1,ch);
fun(x,y-1,ch);
}
}
void setin(){
int x,y;
char ch;
scanf("%d%d %c",&x,&y,&ch);
fun(x,y,ch);
}
int main() {
int i,j,k;
cin>>m>>n>>q;
for(i=0;i<n;i++){
for(j=0;j<m;j++)
G[i][j]='.';
}
while(q--){
int tag;
scanf("%d",&tag);
if(tag==0)
line();
else
setin();
}
for(i=0,j=n-1;i<j;i++,j--){
for(k=0;k<m;k++)
swap(G[i][k],G[j][k]);
}
for(i=0;i<n;i++){
for(j=0;j<m;j++)
printf("%c",G[i][j]);
if(i!=n-1)
printf("\n");
}
return 0;
}