RYIP在线题库
首 页   >   习题练习   >   提交
Problem2074--城镇地图

2074: 城镇地图

[Creator : ]
Time Limit : 1.000 sec  Memory Limit : 128 MB

【 Description 】

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

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

· 给穿过城镇中心的一行画上减号 -(城镇中心位置不画) · 给穿过城镇中心的一列画上竖线 |(城镇中心位置不画)

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

· 以上横竖斜线将城镇分割为八个区域 ,按照顺时针方向给每个区域分别填上 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

Copy

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

HH|A  

HH|A  

\H|A  

G\|/  

--+-  

F/|\  

/E|D  

Copy

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

|

+



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

输入格式

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

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

输出格式

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

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


数据范围

· 对于 60% 的数据:满足 1≤n,m≤1000

· 对于 100%的数据:满足 1≤n,m≤1000000

· 对于 100% 的数据:满足 Q≤1000

注意

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

C/C++ 中 ,一个反斜杠字符 \ 在字符串或字符常量中 ,用两个反斜杠表示,例如:

char ch = '\\ ';  char s [] = "\\"; // strlen(s) == 1

std::string s = "\\"; // s.length() == 1

 

 

 


【 Sample Input 】

6 15 4 8
2
1 1
2 7

【 Sample Output 】

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

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

【 Source/Category 】

top TX