|
2 | 2 | import java.util.*; |
3 | 3 |
|
4 | 4 | public class Main { |
5 | | - |
6 | | - static int[] info; |
7 | | - static int[][] arr, copyArr; |
8 | | - static StringTokenizer st; |
9 | | - static StringBuilder sb = new StringBuilder(); |
10 | | - static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); |
11 | | - static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); |
| 5 | + static int h, w, x, y; |
| 6 | + static int[][] A, B; |
12 | 7 | public static void main(String[] args) throws Exception { |
13 | | - st = new StringTokenizer(br.readLine()); |
14 | | - |
15 | | - info = new int[4]; |
16 | | - for (int i = 0; i < 4; i++) info[i] = Integer.parseInt(st.nextToken()); |
17 | | - arr = new int[info[0]][info[1]]; |
18 | | - copyArr = new int[info[0] + info[2]][info[1] + info[3]]; |
19 | | - int x, y; |
20 | | - for (int i = 0; i < info[0] + info[2]; i++) { |
21 | | - st = new StringTokenizer(br.readLine()); |
22 | | - for (int j = 0; j < info[1] + info[3]; j++) { |
23 | | - copyArr[i][j] = Integer.parseInt(st.nextToken()); |
| 8 | + preSetting(); |
| 9 | + findOriginArr(); |
| 10 | + } |
24 | 11 |
|
25 | | - x = i - info[2]; |
26 | | - y = j - info[3]; |
| 12 | + static void findOriginArr(){ |
| 13 | + int[][] origin = new int[h][w]; |
27 | 14 |
|
28 | | - if (i < info[0] && j < info[1]) { |
29 | | - if (0 <= x && x < info[0] && 0 <= y && y < info[1]) arr[i][j] = copyArr[i][j] - arr[x][y]; |
30 | | - else arr[i][j] = copyArr[i][j]; |
| 15 | + for(int i = 0; i < x; i++){ |
| 16 | + for(int j = 0; j < w; j++){ |
| 17 | + origin[i][j] = B[i][j]; |
| 18 | + } |
| 19 | + } |
| 20 | + for(int i = 0; i < h; i++){ |
| 21 | + for(int j = 0; j < y; j++){ |
| 22 | + origin[i][j] = B[i][j]; |
| 23 | + } |
| 24 | + } |
| 25 | + for(int i = x; i < h; i++){ |
| 26 | + for(int j = y; j < w; j++){ |
| 27 | + origin[i][j] = B[i][j] - origin[i - x][j - y]; |
| 28 | + } |
| 29 | + } |
31 | 30 |
|
32 | | - if(j < info[1] - 1) sb.append(arr[i][j]).append(" "); |
33 | | - else sb.append(arr[i][j]); |
34 | | - } |
| 31 | + StringBuilder sb = new StringBuilder(); |
| 32 | + for(int i = 0; i < h; i++){ |
| 33 | + for(int j = 0; j < w; j++){ |
| 34 | + sb.append(origin[i][j]).append(" "); |
35 | 35 | } |
36 | | - if(i < info[0]) sb.append("\n"); |
| 36 | + sb.append("\n"); |
37 | 37 | } |
38 | 38 |
|
39 | | - bw.append(sb); |
40 | | - bw.close(); |
| 39 | + System.out.println(sb.toString()); |
| 40 | + } |
| 41 | + |
| 42 | + static void preSetting() throws Exception { |
| 43 | + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); |
| 44 | + StringTokenizer st = new StringTokenizer(br.readLine()); |
| 45 | + |
| 46 | + h = Integer.parseInt(st.nextToken()); |
| 47 | + w = Integer.parseInt(st.nextToken()); |
| 48 | + x = Integer.parseInt(st.nextToken()); |
| 49 | + y = Integer.parseInt(st.nextToken()); |
| 50 | + |
| 51 | + B = new int[h + x][w + y]; |
| 52 | + for(int i = 0; i < h; i++){ |
| 53 | + st = new StringTokenizer(br.readLine()); |
| 54 | + for(int j = 0; j < w; j++){ |
| 55 | + B[i][j] = Integer.parseInt(st.nextToken()); |
| 56 | + } |
| 57 | + } |
41 | 58 | } |
42 | 59 | } |
0 commit comments