乐乐管理了一个巨大的城镇 。城镇可以看作是⼀个 n 行 m 列的矩形 ,其中 ,城镇的中心位于 第 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南京市“信息与未来”程序设计小能手