📄 3063431_ac_15ms_156k.cpp
字号:
#include <stdio.h>
#include <algorithm>
using namespace std;
char page[77][77];
int w, h;
void print()
{
int i;
putchar('+');
for (i = 0; i < w; i++)
{
putchar('-');
}
putchar('+');
putchar('\n');
}
int main()
{
char com[10];
char text[75];
int i, j;
int a, b, c, d;
while (scanf("%d%d",&w,&h)==2)
{
if (w==0&&h==0)
{
break;
}
memset(page,' ',sizeof(page));
while (scanf("%s",com)==1)
{
if(strcmp(com,"POINT")==0)
{
scanf("%d%d",&b,&a);
if(page[a][b]==' '||page[a][b]=='o')
page[a][b] = 'o';
else
page[a][b] = '*';
}
if (strcmp(com,"TEXT")==0)
{
scanf("%d%d%s",&b,&a,text);
for (j = b; text[j-b]; j++)
{
if (page[a][j]==' '||page[a][j]==text[j-b])
{
page[a][j] = text[j-b];
}
else
{
if ((page[a][j]=='-'&&text[j-b]=='|')||(page[a][j]=='|'&&text[j-b]=='-'))
{
page[a][j] = '+';
}
else
{
if ((page[a][j]=='/'&&text[j-b]=='\\')||(page[a][j]=='\\'&&text[j-b]=='/'))
{
page[a][j] = 'x';
}
else
{
page[a][j] = '*';
}
}
}
}
}
if (strcmp(com,"LINE")==0)
{
scanf("%d%d%d%d",&b,&a,&d,&c);
if (a==c)
{
if (b > d)
{
swap(b,d);
}
for (i = b; i <= d; i++)
{
if (page[a][i]==' '||page[a][i]=='-'||page[a][i]=='+')
{
if(page[a][i]!='+')
page[a][i] = '-';
}
else
{
if (page[a][i]=='|')
page[a][i] = '+';
else
page[a][i] = '*';
}
}
continue;
}
if (b==d)
{
if(a > c)
{
swap(a,c);
}
for(i = a; i <= c; i++)
{
if (page[i][b]==' '||page[i][b]=='|'||page[i][b]=='+')
{
if(page[i][b]!='+')
page[i][b] = '|';
}
else
{
if (page[i][b]=='-')
page[i][b] = '+';
else
page[i][b] = '*';
}
}
continue;
}
if ((b-d)/(a-c)==-1)
{
if (a > c)
{
swap(a,c);
swap(b,d);
}
i = a;j = b;
while(i<=c&&j>=d)
{
if(page[i][j]==' '||page[i][j]=='/')
{
page[i][j] = '/';
}
else
{
if(page[i][j]=='\\')
page[i][j] = 'x';
else
page[i][j] = '*';
}
i++;j--;
}
}
else
{
if(a > c)
{
swap(a,c);
swap(b,d);
}
i = a;j = b;
while (i<=c&&j<=d)
{
if (page[i][j]==' '||page[i][j]=='\\')
{
page[i][j] = '\\';
}
else
{
if(page[i][j]=='/')
page[i][j] = 'x';
else
page[i][j] = '*';
}
i++;j++;
}
}
}
if (strcmp(com,"CLEAR")==0)
{
scanf("%d%d%d%d",&b,&a,&d,&c);
if (a == c)
{
if (b > d)
{
swap(b,d);
}
for(i = b; i <= d; i++)
{
page[a][i] = ' ';
}
continue;
}
if (b == d)
{
if (a > c)
{
swap(a,c);
}
for (i = a; i <= c; i++)
{
page[i][b] = ' ';
}
continue;
}
if ((b-d)*(a-c)<0)
{
if (a > c)
{
swap(a,c);
swap(b,d);
}
for (i = a; i <= c; i++)
{
for (j = d; j <= b; j++)
{
page[i][j] = ' ';
}
}
}
else
{
if(a > c)
{
swap(a,c);
swap(b,d);
}
for (i = a; i <= c; i++)
{
for (j = b; j <= d; j++)
{
page[i][j] = ' ';
}
}
}
}
if (strcmp(com,"PRINT")==0)
{
print();
for (i = 1; i <= h; i++)
{
putchar('|');
for (j = 1; j <= w; j++)
{
putchar(page[i][j]);
}
putchar('|');
putchar('\n');
}
print();
putchar('\n');
break;
}
}
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -