11157. Crossword
|
Description
Mirko has assembled an excellent crossword puzzle and now he wants to frame it. Mirko's crossword puzzle consists of M x N letters, and the frame around it should be U characters wide on top, L characters on the left, R characters on the right and D characters on the bottom side. The frame consists of characters # (hash) and . (dot) which alternate like fields on a chessboard. These characters should be arranged in a way that, if the frame is expanded to cover the entire crossword puzzle and we treat these characters as a chessboard, the # characters should be placed as the red fields on a chessboard (i.e. the top left field). See the examples below for a better understanding of the task.
Input
The first line of input contains two integers M and N (1 ≤ M, N ≤ 10). The second line of input contains integers U, L, R, D (0 ≤ U, L, R, D ≤ 5). The following M lines of input contains N characters – lowercase letters of the English alphabet. These lines represent Mirko's crossword puzzle.
Output
Output the framed crossword puzzle as stated in the text.
Sample Input
样例1: 4 4 2 2 2 2 honi oker nera irak 样例2: 2 4 1 0 3 1 rima mama
Sample Output
样例1: #.#.#.#. .#.#.#.# #.honi#. .#oker.# #.nera#. .#irak.# #.#.#.#. .#.#.#.# 样例2: #.#.#.# rima.#. mama#.# .#.#.#.
// Problem#: 11157
// Submission#: 3719849
// The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License
// URI: http://creativecommons.org/licenses/by-nc-sa/3.0/
// All Copyright reserved by Informatic Lab of Sun Yat-sen University
#include <algorithm>
#include <iostream>
#include <string>
#include <cstdio>
#include <queue>
#include <cstring>
#include <vector>
#include <iomanip>
#include <map>
#include <stack>
#include <list>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
int u, l, r, d;
cin >> u >> l >> r >> d;
vector<vector<char> > b(n + u + d);
for (int i = 0; i < b.size(); i++) {
vector<char> line(m + l + r);
b[i] = line;
}
for (int i = 0; i < b.size(); i++) {
for (int j = 0; j < b[i].size(); j++) {
if ((i + j) % 2) b[i][j] = '.';
else b[i][j] = '#';
}
}
for (int i = 0; i < n; i++) {
string s;
cin >> s;
for (int j = 0; j < s.size(); j++) {
b[u + i][l + j] = s[j];
}
}
for (int i = 0; i < b.size(); i++) {
for (int j = 0; j < b[i].size(); j++) {
cout << b[i][j];
}
cout << endl;
}
return 0;
} |