4585 - 城镇地图

题目描述

乐乐管理了一个巨大的城镇 。城镇可以看作是⼀个 nm 列的矩形 ,其中 ,城镇的中心位于 第 x_0 行 、第 y_0 列 。城镇中每个格子都用一个字符来表示 ,城镇地图的绘制方法如下:

首先在城镇的中心画上一个加号 +

给穿过城镇中心的一行画上减号 -。(城镇中心位置不画)

给穿过城镇中心的一列画上竖线 |。(城镇中心位置不画)

从城镇中心出发 ,分别给斜左上方 、斜右上方 、斜右下方 、斜左下方画上 \/\/ 字 符 ,一直绘制直到到达地图边界。

以上横竖斜线将城镇分割为八个区域 ,按照顺时针方向给每个区域分别填上 A-H 八个字母 ,如下图所示:

例如 ,对于以下 n=8,m=16 的例子 ,假设城镇的中心位于 (4,8) ,绘制的城镇地图如下:

GGGG\HH|AA/BBBBB
GGGGG\H|A/BBBBBB
GGGGGG\|/BBBBBBB
-------+--------
FFFFFF/|\CCCCCCC
FFFFF/E|D\CCCCCC
FFFF/EE|DD\CCCCC
FFF/EEE|DDD\CCCC

对于 n=7,m=4 ,城镇中心位于 (5,3) ,绘制的城镇地图如下:

HH|A
HH|A
\H|A
G\|/
--+-
F/|\
/E|D

如果 n=2,m=1 ,城镇中心位于 (2,1) ,绘制的城镇地图如下:

|
+

城镇实在是太大了 ,居民们不得不依靠 GPS 定位 。 因此 ,居民们希望你帮助他们开发一款地图应用 ,根据 GPS 位置 (第 x 行第 y 列) 绘制出以 (x,y) 为中心 ,大小为 5 \times 5 的城镇地图。

输入

输⼊第一行四个整数 n,m,x_0,y_0,分别代表城镇区域的高度 (n 行) 、宽度 (m 列) 和城镇中心的位置 (x_0,y_0) 。城镇中心的位置满足 1≤x_0≤n,1≤y_0≤m

输⼊第二行一个整数 Q , 代表绘制地图的请求数量 。 接下来 Q 行 , 每行两个整数 x,y(1≤x≤n,1≤y≤m),表示一个请求 ,绘制出以第 x 行第 y 列为中心的 5×5 地图。

输出

为每个请求x,y 输出 5 行 ,每行 5 个字符 ,为绘制的地图 。超出城镇边界的部分画井号 #

为了更好的视觉效果 ,你可以选择在每个请求之后输出一个额外的空行 (是否输出额外空行不影响正确性)。

样例

输入

6 15 4 8
2
1 1
2 7

输出

#####
#####
##GGG
##GGG
##GGG

##### 
\HH|A 
G\H|A 
GG\|/ 
---+-
说明

数据规模与提示

对于 60\% 的数据 ,满足 n,m≤1,000

对于 100 \% 的数据 ,满足 1≤n,m≤1,000,000

对于 100 \% 的数据 ,满足 Q≤1,000

注意:

char map[1000000][1000000] 将会占用约 1TB (1024GB) 的内存 。这远超过了我们可用的内存。

char ch = '\\ ';  
char s [] = "\\"; // strlen(s) == 1
std::string s = "\\"; // s.length() == 1
来源

2024南京市“信息与未来”程序设计小能手

标签
题目参数
时间限制 1 秒
内存限制 128 MB
提交次数 5
通过人数 2
金币数量 0 枚
难度 入门


上一题 下一题