Untitled

 avatar
unknown
plain_text
a year ago
40 kB
17
Indexable
import java.util.Scanner;

class Solution {
	private static Scanner sc;
	private static UserSolution usersolution = new UserSolution();

	private final static int MAX_PICTURE_SIZE = 1000;
	private final static int MAX_PIECE_SIZE = 100;
	private final static int MAXN = 1500;

	private static int mSeed;

	private static int pseudo_rand() {
		mSeed = mSeed * 431345 + 2531999;
		return mSeed & 0x7FFFFFFF;
	}

	private static char mergedPicture[][] = new char[MAX_PICTURE_SIZE][MAX_PICTURE_SIZE];
	private static char ret[][] = new char[MAX_PICTURE_SIZE][MAX_PICTURE_SIZE];
	private static char scrap[][][] = new char[MAXN][MAX_PIECE_SIZE][MAX_PIECE_SIZE];
	private static int scrapIdx[][] = new int[MAX_PICTURE_SIZE][MAX_PICTURE_SIZE];

	private static int seed, N, M, K;
	private static int flag;
	private static int PASS;
	private static int FAIL = 0;
	private static boolean used[] = new boolean[MAXN];

	private static int dx[] = { 1, 0, -1, 0 };
	private static int dy[] = { 0, 1, 0, -1 };
	
	public static boolean setPicture(int id, int x, int y) {
		if (id < 1 || id > N - 1)
			return false;

		if (x < 0 || y < 0 || x > K - M || y > K - M)
			return false;

		if (used[id] == true)
			return false;

		boolean isMatch = false;
		for (int k = 0; k < 4 && !isMatch; k++) {
			for (int i = 1; i <= M - 2; i++) {
				int nx = x + dx[k] * i;
				int ny = y + dy[k] * i;

				if (nx < 0 || ny < 0 || nx > K - M || ny > K - M)
					break;

				if (scrapIdx[ny][nx] != -1) {
					isMatch = true;
					break;
				}
			}
		}

		if (!isMatch)
			return false;

		for (int i = 0; i < M; i++) {
			for (int j = 0; j < M; j++) {
				if (ret[y + i][x + j] != 0 && ret[y + i][x + j] != scrap[id][i][j])
					return false;
			}
		}
		for (int i = 0; i < M; i++) {
			for (int j = 0; j < M; j++) {
				ret[y + i][x + j] = scrap[id][i][j];
			}
		}

		scrapIdx[y][x] = id;
		used[id] = true;
		return true;
	}

	private static void makePicture(int size, int seed) {
		mSeed = seed;

		for (int i = 0; i < size; i++)
			for (int j = 0; j < size; j++)
				mergedPicture[i][j] = (char) (pseudo_rand() % 15 + 1);
	}

	private static int run() {
		flag = sc.nextInt();
		N = sc.nextInt();
		K = sc.nextInt();
		M = sc.nextInt();

		if (flag == 1) {
			for (int i = 0; i < K; i++) {
				for (int j = 0; j < K; j++) {
					mergedPicture[i][j] = (char) sc.nextInt();
				}
			}
		} else {
			seed = sc.nextInt();
			makePicture(K, seed);
		}

		for (int i = 0; i < MAXN; i++)
			used[i] = false;

		for (int i = 0; i < MAX_PICTURE_SIZE; i++) {
			for (int j = 0; j < MAX_PICTURE_SIZE; j++) {
				ret[i][j] = 0;
				scrapIdx[i][j] = -1;
			}
		}

		int y, x;
		for (int i = 0; i < N; i++) {
			y = sc.nextInt();
			x = sc.nextInt();
			for (int j = 0; j < M; j++)
				for (int k = 0; k < M; k++)
					scrap[i][j][k] = mergedPicture[y + j][x + k];
		}

		scrapIdx[0][0] = 0;
		for (int i = 0; i < M; i++) {
			for (int j = 0; j < M; j++) {
				ret[i][j] = mergedPicture[i][j];
			}
		}

		usersolution.mergePictures(N, M, K, scrap);

		for (int i = 0; i < K; i++)
			for (int j = 0; j < K; j++)
				if (ret[i][j] != mergedPicture[i][j])
					return FAIL;

		return PASS;
	}

	public static void main(String[] args) throws Exception {
		System.setIn(new java.io.FileInputStream("C:/Users/hoang.dung2/workspace/SW PRO/src/H2004/input.txt"));
		sc = new Scanner(System.in);

		int TC = sc.nextInt();
		PASS = sc.nextInt();
		for (int tc = 1; tc <= TC; tc++) {
			System.out.println("#" + tc + " " + run());
		}
		sc.close();
	}
}


//==============================================

import java.util.*;

class UserSolution {
    private static int VALUE_HASH = 10;// so de gia tri key han che trung nhau nhat, thường sẽ chọn số nguyên tố
    private static int MIN_SIZE = 10;// so o lay gia tri key, 5,6,7,...
    Map<Integer, List<Node>> mapRow = new HashMap<Integer, List<Node>>();
    Map<Integer, List<Node>> mapCol = new HashMap<Integer, List<Node>>();
    Queue<Pieces> queue = new ArrayDeque<Pieces>();
    int top, right, bottom, left;
  
    void mergePictures(int N, int M, int K, char pictures[][][]) {
        mapRow.clear();
        mapCol.clear();
        queue.clear();
  
        for (int i = 0; i < N; i++) {
            top = left = right = bottom = 0;
  
            for (int j = 0; j < MIN_SIZE; j++) {
                top = top * VALUE_HASH + pictures[i][0][j];//i: tranh ith, 
                bottom = bottom * VALUE_HASH + pictures[i][M - 1][j];
                left = left * VALUE_HASH + pictures[i][j][0];
                right = right * VALUE_HASH + pictures[i][j][M - 1];
            }
  
            // them vao hash
            List<Node> topL = mapRow.getOrDefault(top,new ArrayList<Node>());
            topL.add(new Node(i, 0));
            List<Node> bottomL = mapRow.getOrDefault(bottom,new ArrayList<Node>());
            bottomL.add(new Node(i, M - 1));
            List<Node> leftL = mapCol.getOrDefault(left,new ArrayList<Node>());
            leftL.add(new Node(i, 0));
            List<Node> rightL = mapCol.getOrDefault(right,new ArrayList<Node>());
            rightL.add(new Node(i, M - 1));
  
            mapRow.put(top, topL);
            mapRow.put(bottom, bottomL);
            mapCol.put(left, leftL);
            mapCol.put(right, rightL);
        }
  
        queue.add(new Pieces(0, 0, 0)); // manh ghep dau tien bai cho
  
         
        //BFS
        while (!queue.isEmpty()) {
            Pieces curr = queue.poll();
            int x, y;
// theo row
            for (x = 1; x < M - 1; x++) {
                int row = 0;
                for (y = 0; y < MIN_SIZE; y++) {
                    row = row * VALUE_HASH + pictures[curr.id][x][y];
                }
  
                List<Node> rowL = mapRow.get(row);
                if (rowL == null) continue;
  
                for (Node node : rowL) {
                    if (Solution.setPicture(node.id, curr.x, curr.y + x
                            - node.coor)) { // xet theo row nen truc hoanh x nhu nhau, y = curr.y + x - node.coor
                        queue.add(new Pieces(node.id, curr.x, curr.y + x
                                - node.coor));
                        break;
                    }
                }
            }
         // theo col
            for (x = 1; x < M - 1; x++) {
                int col = 0;
                for (y = 0; y < MIN_SIZE; y++) {
                    col = col * VALUE_HASH + pictures[curr.id][y][x];
                }
  
                List<Node> colL = mapCol.get(col);
                if (colL == null)
                    continue;
  
                for (Node node : colL) {
                    if (Solution.setPicture(node.id, curr.x + x - node.coor,
                            curr.y)) {
                        queue.add(new Pieces(node.id, curr.x + x - node.coor,
                                curr.y));
                        break;
                    }
                }
            }
        }
    }
  
    class Pieces {
        int id, x, y; //id: id manh
        //x y toa do diem dau tien manh
  
        public Pieces(int id, int x, int y) {
            this.id = id;
            this.x = x;
            this.y = y;
        }
    }
  
    class Node {
        int id, coor; // coor: chieu dai cua manh ghep
  
        public Node(int id, int coor) {
            this.id = id;
            this.coor = coor;
        }
    }
}

//=====================================

class UserSolution2 {

	// Main API :
	// Solution.setPicture(int id, int x, int y)

	private final static int MAX_PICTURE_SIZE = 1000;
	private final static int MAX_PIECE_SIZE = 100;
	private final static int MAXN = 1500;

	public static final int UP = 0;
	public static final int RIGHT = 1;
	public static final int DOWN = 2;
	public static final int LEFT = 3;

	public static int[][][] pics = new int[MAXN][MAX_PIECE_SIZE][MAX_PIECE_SIZE];
	public static int[][][] result = new int[MAXN][MAX_PIECE_SIZE][MAX_PIECE_SIZE];
	public static Piece[][] isMerge;
	public static Piece[] picture;

	void mergePictures(int N, int M, int K, char pictures[][][]) {
		picture = new Piece[N];
		isMerge = new Piece[N][4];

		picture[0] = new Piece(0, 0, 0);
		isMerge[0][UP] = new Piece(-1, -1, -1);
		isMerge[0][LEFT] = new Piece(-1, -1, -1);

		for (int i = 0; i < N; i++) {
			for (int j = 0; j < M; j++) {
				for (int k = 0; k < M; k++) {
					pics[i][j][k] = (int) pictures[i][j][k];
				}
			}
		}

		// for (int i = 0; i < N; i++) {
		// for (int j = 0; j < M; j++) {
		// for (int k = 0; k < M; k++) {
		// System.out.print(pics[i][j][k] + " ");
		// }
		// System.out.println();
		// }
		// System.out.println("------------");
		// }
		
		boolean stop = false;
		for (int i = 0; i < N - 1; i++) {
			// check ngang
			for (int r = 0; r < M; r++) {
				for (int j = i + 1; j < N; j++) {
					// duoi
					if(isMerge[i][DOWN] == null){
						if (pics[i][r][0] == pics[j][0][0]) {
							
							stop = false;
							for (int c = 1; c < M; c++) {
								if(pics[i][r][c] != pics[j][0][c]){
									stop = true;
									break;
								}
							}
							
							if(stop)	continue;
							for (int k = r+1; k < M; k++) {
								for (int c = 0; c < M; c++) {
									if(pics[i][k][c] != pics[j][k-r][c]){
										stop = true;
										break;
									}
								}
								if(stop){
									break;
								}
							}
							if(!stop){
								isMerge[i][DOWN] = new Piece(j, r, 0);
								isMerge[j][UP] = new Piece(j, -r, 0);
//								isMerge[j][UP] = new Piece(i, x, y)
//								System.out.println("merge down " + i + " " + j);
							}
						}						
					}

					// tren
					if(isMerge[i][UP] == null){
						if (pics[i][r][0] == pics[j][M - 1][0]) {
							stop = false;
							for (int c = 1; c < M; c++) {
								if(pics[i][r][c] != pics[j][M-1][c]){
									stop = true;
									break;
								}
							}
							
							if(stop)	continue;
							for (int k = r-1; k >= 0; k--) {
								for (int c = 0; c < M; c++) {
									if(pics[i][k][c] != pics[j][M-1-r+k][c]){
										stop = true;
										break;
									}
								}
								if(stop)	break;
							}
							if(!stop){
								isMerge[i][UP] = new Piece(j, -r, 0);
								isMerge[j][DOWN] = new Piece(j, r, 0);
//								System.out.println("merge up " + i + " " + j);
							}
						}						
					}
				}
			}

			// check doc
			for (int c = 0; c < M; c++) {
				for (int j = i + 1; j < N; j++) {
					//phai
					if(isMerge[i][RIGHT] == null){
						if (pics[i][0][c] == pics[j][0][0]) {
							
							stop = false;
							for (int r = 1; r < M; r++) {
								if(pics[i][r][c] != pics[j][r][0]){
									stop = true;
									break;
								}
							}
							
							if(stop)	continue;
							for (int k = c+1; k < M; k++) {
								for (int r = 0; r < M; r++) {
									if(pics[i][r][k] != pics[j][r][k-c]){
										stop = true;
										break;
									}
								}
								if(stop) break;
							}
							if(!stop){
								isMerge[i][RIGHT] = new Piece(j, 0, c);
								isMerge[j][LEFT] = new Piece(i, 0, -c);
//								System.out.println("merge right " + i + " " + j);
							}
						}						
					}

					//trai
					if(isMerge[i][LEFT] == null){
						if (pics[i][0][c] == pics[j][0][M - 1]) {
							stop = false;
							for (int r = 1; r < M; r++) {
								if(pics[i][r][c] != pics[j][r][M - 1]){
									stop = true;
									break;
								}
							}
							
							if(stop)	continue;
							for (int k = c-1; k >= 0; k--) {
								for (int r = 0; r < M; r++) {
									if(pics[i][r][k] != pics[j][r][M-1-c+k]){
										stop = true;
										break;
									}
								}
								if(stop) break;
							}
							if(!stop){
								isMerge[i][LEFT] = new Piece(j, 0, -c);
								isMerge[j][RIGHT] = new Piece(i, 0, c);
//								System.out.println("merge left " + i + " " + j);
							}
						}						
					}
				}
			}

		}

		int[] queue = new int[N+1];
		int f = -1, r = -1, piece, x, y;

		queue[++r] = 0;
		Piece p;
		
		while(f!=r){
			piece = queue[++f];
			for (int i = 0; i < 4; i++) {
				if(isMerge[piece][i] != null && isMerge[piece][i].id > 0){
					p = isMerge[piece][i];
					if(picture[p.id] == null){
						x = picture[piece].x + p.x;
						y = picture[piece].y + p.y;
						
						picture[p.id] = new Piece(p.id, x, y);
						Solution.setPicture(p.id, y, x);
						queue[++r] = p.id;	
					}
				}
			}
		}
		
		
		
//		Solution.setPicture(2, 3, 0);
//		Solution.setPicture(4, 3, 2);
//		Solution.setPicture(6, 5, 0);
//		Solution.setPicture(5, 3, 5);
//		Solution.setPicture(3, 0, 5);
//		Solution.setPicture(1, 5, 5);
	}
}

class Piece {
	int id;
	int x, y;

	public Piece() {
		// TODO Auto-generated constructor stub
	}
	public Piece(int id, int x, int y) {
		// TODO Auto-generated constructor stub
		this.id = id;
		this.x = x;
		this.y = y;
	}

}

//=====================================
10 100
1 7 10 5
15 15 12 4 3 2 9 6 8 5 
13 15 13 5 14 2 12 7 9 4 
4 13 10 1 4 1 9 12 12 11 
2 10 1 6 5 3 1 9 12 1 
11 8 3 6 7 7 5 12 5 8 
6 1 9 5 14 2 14 14 8 12 
13 8 7 4 9 2 2 13 6 8 
14 8 14 1 1 15 9 15 7 5 
7 15 9 10 9 12 12 2 12 11 
12 10 4 7 13 14 1 7 4 9 
0 0
5 5
0 3
5 0
2 3
5 3
0 5
0 7 10 5
9895
0 0
5 5
3 0
0 5
3 5
3 2
5 0
0 7 10 5
5447
0 0
5 5
3 0
0 5
3 5
3 2
5 0
0 8 10 5
1726
0 0
0 5
0 3
2 3
2 0
2 5
5 0
5 5
0 8 10 5
4771
0 0
5 5
0 5
3 0
3 5
3 2
5 2
5 0
0 14 20 8
2086
0 0
12 0
2 4
2 9
8 12
2 12
8 4
0 9
8 0
0 12
8 9
12 12
0 4
12 4
0 439 500 40
6405
0 0
142 57
142 289
0 57
83 198
182 460
238 344
0 158
104 344
0 198
328 183
0 406
0 263
146 5
142 374
0 334
0 344
0 374
0 249
0 426
278 263
460 198
14 5
14 40
14 249
14 88
146 344
224 5
40 40
142 128
14 198
238 334
104 0
14 263
14 289
14 303
14 334
14 344
146 426
224 88
238 406
368 249
315 460
40 5
224 426
328 198
40 88
40 101
142 406
40 158
40 183
40 198
104 460
40 249
83 223
0 303
186 263
264 88
40 344
142 88
186 0
40 426
429 183
146 249
264 460
54 40
186 303
54 88
278 426
142 303
54 158
54 183
315 57
238 5
142 460
358 406
54 289
54 303
54 334
460 40
142 426
54 406
460 334
54 460
264 5
315 334
182 334
328 249
0 183
83 101
0 40
315 289
142 158
0 88
14 374
142 0
358 374
186 57
83 303
146 0
368 158
83 374
83 406
54 0
83 460
14 57
104 5
224 0
104 57
104 88
182 303
104 128
358 5
460 460
315 88
315 263
104 249
104 263
104 289
398 460
104 334
398 334
104 374
104 406
104 426
40 223
83 249
0 128
398 303
315 223
398 5
142 101
54 128
14 183
186 406
142 198
142 223
368 57
142 263
429 57
54 101
83 344
368 40
83 57
146 128
186 249
224 344
264 303
238 101
146 40
146 57
104 101
14 460
40 128
146 158
146 183
146 198
398 406
460 223
142 344
0 5
146 303
328 344
14 101
224 57
146 406
264 57
186 198
182 374
182 5
182 40
40 0
182 88
182 101
315 198
186 5
54 374
83 263
14 128
186 289
429 128
14 0
278 303
328 57
315 249
460 289
358 40
398 344
146 223
368 183
186 223
186 40
83 289
186 88
186 101
182 223
328 40
186 183
146 460
54 344
278 334
358 344
182 249
358 249
83 5
186 344
186 374
142 183
278 0
186 460
278 374
104 198
40 406
358 460
14 406
460 249
429 223
224 158
54 426
224 198
224 223
398 40
182 158
224 289
224 303
224 334
104 223
224 374
224 406
14 158
224 460
238 0
54 5
146 101
54 263
238 88
398 223
238 128
83 40
429 344
264 101
142 40
238 249
328 0
238 289
358 263
368 374
358 128
398 158
182 183
238 426
104 40
398 249
224 249
358 158
146 88
40 334
238 198
264 128
264 158
368 344
182 263
264 223
264 249
315 406
264 289
83 334
238 263
182 289
264 374
264 406
398 263
460 101
429 40
278 5
278 40
278 57
278 88
278 101
460 57
238 374
278 183
278 198
398 0
278 249
315 128
238 183
429 0
40 303
429 198
238 460
398 198
83 183
278 460
315 0
315 5
315 40
54 198
186 128
368 289
368 334
315 158
460 426
358 334
146 289
224 128
429 249
182 406
264 198
264 344
146 263
315 374
358 0
315 426
0 223
54 249
328 5
224 40
238 158
328 88
328 101
328 128
328 158
238 57
40 57
328 223
264 426
328 263
328 289
328 303
368 128
146 334
328 374
328 406
142 5
328 460
54 223
104 158
83 158
358 57
358 88
460 0
328 426
182 128
358 183
358 198
358 426
54 57
238 303
358 289
358 303
264 40
186 426
83 88
264 334
358 223
186 334
460 344
278 128
315 344
142 249
368 88
368 101
328 334
142 334
460 183
368 198
368 223
429 5
429 406
315 101
368 303
0 460
264 183
224 263
368 406
368 426
368 460
224 183
40 374
83 0
398 57
398 101
398 88
398 128
278 158
398 183
182 426
0 289
358 101
40 263
398 289
238 223
182 198
278 406
398 374
0 101
398 426
104 303
224 101
238 40
14 426
83 128
278 223
429 101
264 0
429 158
40 460
278 344
182 344
182 57
460 128
429 289
429 303
429 334
278 289
368 263
429 374
429 426
460 303
315 303
186 158
14 223
368 5
460 88
264 263
429 263
460 158
460 5
146 374
83 426
40 289
460 263
182 0
429 460
429 88
368 0
460 374
460 406
0 1259 700 35
7956
0 0
455 590
0 35
0 51
123 580
0 86
39 590
399 344
158 665
503 191
468 208
108 390
309 468
0 243
630 243
0 287
108 309
123 309
364 116
35 116
75 191
276 86
0 430
399 517
0 468
0 477
0 503
0 517
0 545
158 430
309 81
353 468
108 35
0 627
0 650
399 430
257 400
353 615
4 35
75 503
4 81
4 86
324 650
324 173
4 156
617 390
4 191
4 208
4 226
364 665
364 309
75 208
4 309
4 327
4 344
455 35
4 390
551 116
4 430
70 442
4 468
4 477
187 5
617 173
276 116
468 309
536 430
665 590
4 615
551 555
536 580
580 208
324 226
389 35
495 81
309 590
35 81
35 86
229 555
276 615
35 156
35 173
630 555
158 477
35 226
187 86
455 51
35 287
152 390
35 327
257 243
630 261
35 390
35 400
35 430
194 545
586 590
158 86
536 590
536 287
35 545
35 555
123 362
152 173
222 5
194 555
194 517
123 468
39 0
39 5
39 35
630 545
665 243
468 468
39 116
39 138
39 156
657 138
108 665
152 545
309 191
4 580
75 344
39 51
353 116
152 650
257 156
70 116
39 390
39 400
39 430
455 81
364 287
39 477
158 226
108 580
364 650
0 81
39 580
108 86
257 362
39 627
222 468
39 665
70 0
324 51
70 35
158 191
536 116
70 86
152 0
257 627
70 156
580 0
257 430
70 208
630 590
70 243
536 81
257 86
70 309
70 327
257 665
70 362
70 390
187 35
70 430
4 442
630 226
70 477
468 5
617 503
70 344
353 327
0 261
70 590
75 477
70 627
309 517
630 344
468 51
617 442
229 35
75 51
75 580
389 477
75 116
75 138
75 156
75 173
665 555
257 138
35 468
630 81
75 261
152 35
665 35
75 327
39 261
222 173
364 627
194 615
75 430
75 442
75 468
70 400
152 156
75 517
586 138
39 503
580 362
75 590
503 138
75 627
503 51
75 665
0 590
187 580
276 51
108 51
152 590
0 116
108 116
194 138
257 650
229 287
536 503
187 173
108 226
108 243
424 35
108 287
39 362
495 665
108 344
364 226
0 208
551 81
108 430
108 442
108 468
389 116
35 0
108 517
158 344
108 555
0 191
276 545
353 81
187 116
108 650
617 51
551 173
35 627
257 191
580 627
276 580
123 86
309 261
617 344
108 156
455 477
123 191
123 208
123 226
123 243
389 327
123 287
0 327
0 5
70 5
35 580
424 390
503 327
70 226
424 503
75 555
123 477
222 477
123 517
399 116
158 138
580 545
123 590
123 615
123 627
123 650
468 344
353 590
35 503
630 362
152 51
152 81
0 156
630 400
495 362
364 615
108 400
152 191
4 400
187 555
123 400
152 261
152 287
536 0
455 156
152 344
152 362
309 0
222 650
152 430
152 442
536 442
152 477
35 51
152 517
39 208
389 191
39 173
503 116
222 580
580 468
665 517
424 81
123 503
158 5
158 35
158 51
657 86
35 477
75 287
424 138
399 650
580 156
70 51
158 208
276 5
158 243
424 116
158 287
158 309
495 477
108 545
617 517
194 650
108 208
0 555
158 442
158 468
4 5
503 545
399 156
630 309
158 555
187 545
158 590
158 615
399 35
586 35
324 344
222 0
75 226
389 555
657 51
187 81
4 173
630 51
75 86
657 208
536 156
187 191
187 208
187 226
389 5
187 261
495 51
158 650
187 327
152 615
222 35
123 35
187 400
353 243
70 665
257 468
580 400
187 503
364 81
158 580
152 226
309 51
187 590
187 615
187 627
187 650
187 665
194 0
353 400
194 35
35 138
586 627
194 86
324 156
108 138
194 156
353 5
657 555
580 51
194 226
276 173
194 261
309 243
353 627
194 327
389 517
194 362
123 138
158 400
389 173
455 615
194 468
194 477
194 503
495 243
4 0
39 650
194 580
229 309
424 545
536 627
158 390
35 309
187 0
309 309
551 344
222 51
229 545
424 400
324 35
580 86
657 309
229 51
229 580
222 208
495 503
324 517
4 503
665 51
222 309
70 261
580 650
353 555
222 390
108 362
222 430
222 442
108 615
158 0
152 5
389 390
309 35
495 156
536 243
222 590
158 545
222 627
580 138
152 627
229 0
229 5
257 51
158 627
229 81
229 86
229 116
229 138
229 156
229 173
229 191
229 208
353 138
665 344
364 327
108 173
194 590
229 327
229 344
229 362
229 390
229 400
257 0
229 442
229 468
229 650
424 362
123 430
152 208
194 400
389 138
657 116
229 615
229 627
364 173
222 261
657 156
257 5
257 35
4 51
257 81
70 287
257 116
4 287
324 580
468 400
399 390
586 327
257 226
468 327
424 191
257 287
353 390
108 81
257 344
187 287
257 390
0 665
70 191
257 442
187 468
353 191
39 344
222 555
630 156
257 555
657 173
194 81
257 615
70 138
389 261
70 545
586 0
580 442
657 5
324 503
657 468
187 362
630 468
276 138
276 156
580 116
276 191
276 208
276 226
399 261
551 51
0 309
276 309
309 615
657 590
222 665
75 309
276 400
158 81
276 442
276 468
276 477
276 503
389 226
108 590
276 555
35 442
276 590
194 51
389 580
276 650
389 615
665 261
536 327
194 665
353 545
617 35
324 5
123 51
152 116
70 650
222 191
324 81
309 208
309 226
503 390
4 627
108 503
123 81
309 327
657 362
309 362
309 390
309 400
551 191
309 442
536 650
39 468
389 430
0 362
309 545
364 590
309 580
468 116
665 362
309 627
309 287
630 5
152 243
309 86
424 173
630 442
39 226
324 86
364 580
324 138
187 156
657 287
194 287
324 208
35 615
324 243
324 261
495 287
324 309
324 327
123 442
324 362
324 390
399 5
324 430
324 442
75 243
152 400
586 468
630 503
455 261
657 327
324 116
324 590
309 430
399 81
665 138
324 665
353 0
194 173
353 35
353 51
123 344
353 86
617 545
353 430
353 156
580 173
257 590
353 208
551 327
551 650
353 261
353 287
353 309
152 468
309 344
353 362
455 627
194 5
665 503
364 430
276 362
353 477
309 138
353 517
108 5
455 327
353 580
276 287
0 442
630 650
353 650
495 309
364 0
364 5
364 35
364 51
389 156
536 477
665 226
187 344
364 156
399 51
364 191
364 208
617 261
364 243
399 0
630 580
276 344
229 261
364 344
364 362
364 390
657 442
353 442
364 442
389 665
536 545
364 503
424 156
364 545
424 86
503 81
580 35
123 0
424 226
503 243
4 243
424 344
580 344
617 650
495 442
389 81
389 86
108 477
222 615
75 0
194 430
276 81
389 208
503 477
39 555
123 156
108 327
389 309
123 261
389 344
389 362
324 287
389 400
309 503
389 442
389 468
158 503
665 309
194 344
75 400
70 615
399 468
389 590
580 477
389 627
389 650
455 362
364 261
324 400
0 400
108 0
324 627
468 173
123 545
158 116
70 580
229 665
399 287
276 327
399 226
399 243
276 243
399 191
399 309
399 327
0 138
399 362
187 390
152 555
424 243
399 442
536 400
399 477
399 503
468 138
468 615
399 555
75 35
152 86
495 468
399 627
586 243
399 665
617 287
424 5
108 261
424 51
152 665
364 555
158 261
580 580
364 517
389 243
257 261
424 208
75 390
158 156
276 517
424 287
187 243
424 327
389 0
630 627
123 390
495 35
424 430
455 555
586 615
424 477
586 390
424 517
389 545
424 555
424 261
424 590
424 615
424 627
309 116
424 665
630 517
455 5
4 362
35 261
39 442
455 86
455 116
495 0
665 327
455 173
455 191
455 208
455 226
455 243
229 477
580 327
455 309
222 362
455 344
257 173
455 390
455 400
257 517
222 545
364 138
39 327
455 503
194 191
455 545
424 442
455 580
495 517
399 173
503 156
455 650
455 665
468 0
364 477
468 35
187 517
468 81
309 156
0 390
324 191
468 156
229 517
495 650
39 517
70 468
468 243
468 261
468 287
4 555
468 517
257 208
4 116
468 390
39 309
468 430
468 442
39 86
468 477
468 503
657 243
468 545
468 555
665 665
468 590
276 665
468 627
468 650
194 627
455 138
495 5
222 86
309 477
35 35
495 86
495 116
495 138
399 580
586 5
495 191
222 243
617 580
665 650
495 261
222 517
353 665
495 327
657 665
424 0
495 390
495 400
495 430
276 430
503 555
551 226
35 243
229 590
495 545
495 555
503 503
468 665
495 615
495 627
468 191
364 468
503 0
630 173
503 35
257 309
455 0
503 86
309 650
536 173
324 477
503 173
0 173
503 208
503 226
39 545
503 261
503 287
503 309
617 309
503 344
617 116
276 390
503 400
0 615
503 442
630 287
424 580
152 503
503 517
194 309
617 138
503 580
657 261
503 615
503 627
503 650
503 665
586 287
536 5
536 35
536 51
222 327
536 86
70 81
536 138
468 86
503 362
630 615
536 208
536 226
455 468
536 261
35 517
536 309
309 5
468 580
536 362
536 390
222 344
353 344
70 555
536 468
551 309
35 344
536 517
70 503
586 309
4 650
665 208
536 615
495 590
0 226
665 86
551 0
551 5
665 627
222 503
586 51
389 503
123 665
75 615
551 156
123 173
324 615
551 208
455 517
257 327
424 468
0 344
364 86
657 226
580 590
551 362
551 390
551 400
551 430
551 442
551 468
551 477
551 503
551 517
551 545
324 555
551 580
455 430
551 615
551 627
551 35
551 665
70 173
580 5
468 362
580 555
0 580
222 138
194 243
75 650
158 173
276 0
580 191
4 665
580 226
389 51
580 261
580 390
35 208
455 287
665 580
309 173
222 226
187 477
580 430
39 191
503 590
35 665
194 442
580 517
187 430
35 650
617 430
75 362
580 615
424 650
617 468
580 665
4 138
495 173
187 309
35 590
586 81
586 86
586 116
75 545
586 156
586 173
586 191
586 208
586 226
580 287
586 261
152 309
536 555
222 81
586 344
586 362
399 400
586 400
586 430
586 442
503 430
586 477
586 503
586 517
586 545
222 400
4 590
580 503
551 261
324 468
586 650
586 665
4 517
617 5
39 81
39 243
617 81
617 86
495 580
399 615
617 156
617 0
617 191
617 208
617 226
617 243
657 503
152 138
324 0
617 327
194 390
257 580
257 545
617 400
123 555
75 5
152 327
617 477
194 208
158 362
389 287
617 555
70 517
229 226
617 615
617 627
35 5
617 665
630 0
309 665
630 35
108 627
257 477
630 86
630 116
424 309
39 615
503 5
630 191
630 208
468 226
158 517
35 362
586 580
222 116
630 327
187 442
551 86
630 390
630 138
630 430
123 5
229 503
630 477
495 208
455 442
39 287
35 191
187 138
657 627
4 545
536 191
123 327
630 665
657 0
665 287
657 35
399 590
657 81
399 545
187 51
152 580
580 81
617 362
657 191
194 116
353 226
108 191
495 226
536 665
222 156
123 116
657 344
229 430
657 390
657 400
657 430
364 400
276 35
657 477
586 555
657 517
657 545
580 243
657 580
4 261
657 615
580 309
657 650
495 344
665 0
665 5
399 86
222 287
665 81
551 243
665 116
75 81
665 156
665 173
665 191
257 503
551 287
158 327
309 555
353 173
536 344
276 627
229 243
399 208
665 390
665 400
665 430
665 442
665 468
665 477
617 590
551 590
665 545
324 545
353 503
503 468
665 615
551 138
276 261
0 270 1000 100
6003
0 0
795 293
623 745
0 193
0 200
0 293
28 293
221 641
0 655
738 0
420 293
0 641
420 555
0 745
520 655
670 293
28 0
28 85
844 445
28 193
28 200
565 831
28 345
28 395
28 445
28 525
28 555
28 641
844 395
317 831
121 831
520 525
121 0
121 85
795 395
520 555
738 641
565 85
121 345
121 395
565 655
0 555
121 555
121 641
121 655
121 745
28 831
623 85
365 100
317 293
0 100
670 200
205 200
317 395
205 345
623 100
520 85
900 193
205 555
121 100
205 655
520 445
795 525
465 395
221 0
221 85
221 100
221 345
317 100
520 200
565 395
221 395
738 85
795 655
221 555
205 445
465 900
844 345
28 745
221 900
317 0
670 445
365 641
670 100
317 555
205 85
565 0
623 900
317 445
738 525
317 85
465 345
317 655
520 641
465 745
317 900
795 200
365 85
565 293
420 655
365 200
365 293
205 395
565 100
365 445
900 641
365 555
670 655
221 445
565 345
900 395
365 900
205 745
420 85
221 525
420 193
420 200
121 525
844 655
520 831
795 100
420 525
900 745
420 641
221 200
520 395
205 0
844 745
465 0
465 100
465 85
465 193
465 200
465 293
623 0
623 345
900 293
844 293
465 555
465 641
465 655
520 0
465 831
28 655
738 193
205 641
0 445
365 0
221 293
520 293
420 445
844 900
900 200
221 745
121 193
317 745
670 395
520 745
623 395
520 900
317 345
121 293
365 395
565 193
565 200
420 831
738 395
623 525
221 655
565 525
565 555
565 641
900 445
565 745
205 831
565 900
623 555
623 655
520 100
623 193
623 200
670 345
795 900
121 200
28 100
221 193
205 193
623 641
0 831
317 641
365 345
670 193
420 745
670 85
317 193
670 0
317 200
0 900
623 293
365 831
121 445
670 525
205 525
795 85
365 193
670 745
670 831
670 900
0 525
365 655
738 100
221 831
900 831
738 293
738 345
365 745
738 445
205 293
900 555
900 900
738 655
738 745
738 831
738 900
795 0
670 641
520 345
795 193
205 100
0 85
795 345
900 345
795 445
738 555
795 555
795 641
420 100
795 745
795 831
365 525
420 345
465 445
844 100
844 193
205 900
465 525
420 900
565 445
420 0
844 525
623 445
844 641
844 0
28 900
844 831
520 193
900 0
900 85
900 100
670 555
317 525
844 85
0 395
121 900
844 555
900 525
0 345
900 655
844 200
623 831
0 1053 1000 50
5794
0 0
50 776
0 57
0 85
0 107
370 861
213 576
0 204
692 643
765 671
319 576
217 421
0 333
40 576
517 876
149 471
365 0
40 776
467 610
268 876
950 279
0 610
50 333
149 826
0 700
950 157
0 776
765 279
795 728
950 911
616 358
0 911
0 950
500 421
95 358
40 57
415 861
950 643
40 150
40 157
765 861
263 671
0 509
149 876
40 308
40 333
40 358
40 383
319 383
40 436
40 471
839 728
213 333
517 610
263 279
517 383
40 671
40 700
554 421
658 85
370 0
40 826
40 861
40 876
616 671
40 950
213 383
313 254
370 811
50 85
950 950
95 204
217 911
50 204
50 219
839 157
50 279
50 308
104 308
517 700
319 876
50 421
50 436
658 254
0 436
50 543
313 383
554 861
50 643
50 671
517 671
517 543
795 358
50 811
950 776
268 254
50 876
50 911
217 204
616 157
217 0
500 57
692 576
0 10
95 150
95 157
217 776
95 219
95 254
95 0
95 308
0 383
886 861
467 643
268 157
616 279
467 254
95 509
95 543
95 576
313 543
765 421
500 107
95 700
95 728
602 279
95 811
95 826
213 543
95 876
616 911
95 950
313 279
517 204
795 643
554 279
104 107
104 150
517 10
167 157
692 279
213 85
104 219
839 150
839 421
950 421
104 383
0 861
104 436
149 308
104 509
839 358
50 107
40 728
602 876
104 671
263 700
104 728
268 85
104 811
616 776
467 911
450 308
104 911
104 950
213 811
319 204
149 57
149 10
149 107
602 0
263 576
149 204
149 219
795 826
149 279
658 279
149 333
104 254
217 643
467 219
50 700
692 150
149 509
924 436
149 576
467 471
365 471
365 308
149 700
616 107
149 776
149 811
886 57
616 509
950 471
104 643
765 0
319 776
268 308
167 57
467 826
167 107
734 728
263 0
167 204
365 576
167 254
658 509
658 826
217 876
40 610
370 57
167 421
167 436
0 254
167 509
692 308
167 576
167 610
268 0
658 643
167 700
50 358
517 150
167 811
167 826
167 861
167 876
734 333
167 950
886 811
467 728
213 57
365 436
213 107
213 150
450 876
213 204
370 610
213 254
370 643
263 421
734 826
213 358
365 279
213 421
104 10
213 471
602 421
616 876
467 576
268 643
886 10
213 671
213 700
213 728
924 861
263 254
50 728
517 509
365 204
365 383
450 700
950 811
415 436
616 728
658 610
924 279
268 107
217 157
602 204
313 421
0 728
217 279
217 509
839 610
217 358
554 471
319 358
602 254
217 471
217 308
268 421
167 728
217 610
149 383
213 0
268 811
924 671
319 543
0 876
765 811
217 861
167 333
104 279
217 383
149 421
263 10
95 279
263 85
0 811
263 150
263 157
263 204
263 219
50 383
450 826
263 308
795 0
263 358
167 776
50 150
263 436
263 471
263 509
886 543
149 157
263 610
263 643
886 107
104 700
500 610
517 728
313 811
658 150
263 861
263 876
217 254
263 950
313 157
268 10
268 57
104 776
167 0
268 150
950 204
554 219
149 643
50 861
450 950
370 279
268 333
467 861
268 383
415 107
734 254
415 383
365 776
268 543
268 576
692 876
692 358
554 728
313 861
268 728
554 610
217 700
268 826
950 576
167 671
268 911
765 333
313 0
313 10
313 57
104 333
313 107
313 150
734 776
313 204
319 57
104 421
415 643
217 57
734 85
313 358
734 671
217 219
313 436
313 471
886 728
95 610
467 421
313 610
40 85
313 671
365 700
313 728
313 776
268 279
268 219
149 543
370 543
313 911
692 333
263 728
319 10
795 576
616 826
319 107
450 509
319 157
554 876
319 219
950 383
886 436
319 308
213 876
370 150
795 776
734 876
616 811
319 471
319 509
602 509
950 57
319 610
692 610
319 671
319 700
950 700
0 150
319 811
319 826
319 861
500 576
734 911
319 950
50 509
692 776
450 861
365 85
950 333
467 308
500 543
319 333
365 219
795 150
765 576
415 254
365 333
365 358
268 671
365 421
924 85
313 826
217 728
213 436
167 219
365 610
365 643
616 150
886 308
765 308
268 509
365 811
734 157
365 861
365 876
365 911
365 950
734 700
370 10
167 383
370 85
950 876
313 219
370 157
370 204
415 150
370 254
365 254
370 308
370 471
370 358
370 383
370 421
370 436
370 333
370 509
213 911
370 576
104 0
467 157
263 543
602 671
370 728
370 776
263 911
370 826
500 333
370 876
602 358
370 950
50 950
415 10
415 57
415 85
0 308
370 219
415 157
268 204
415 219
149 671
149 610
415 308
692 826
0 157
319 279
554 150
950 728
658 811
450 219
0 643
415 576
839 509
213 219
839 826
950 107
415 728
886 157
415 543
950 150
213 157
658 204
415 911
104 610
795 421
450 10
467 700
450 85
616 383
450 150
450 157
450 204
602 308
450 254
450 279
602 643
450 333
450 358
370 107
95 333
450 436
450 471
319 150
450 543
450 576
95 436
765 10
450 671
924 57
450 728
450 776
658 776
313 950
365 57
554 811
450 911
217 576
149 254
467 10
149 0
467 85
467 107
467 150
40 254
467 204
149 861
95 471
765 383
167 643
602 911
415 204
839 204
313 576
839 279
415 279
467 509
467 543
268 471
50 576
95 383
554 776
450 57
213 10
467 776
213 509
602 826
313 876
795 671
104 861
167 10
500 0
268 358
95 57
500 85
765 911
500 150
500 157
616 219
467 358
500 254
500 279
500 308
924 728
500 358
517 471
40 0
365 157
795 279
500 509
500 219
104 358
319 0
40 643
500 671
500 700
500 728
500 776
924 383
167 308
40 543
319 911
500 911
500 950
517 0
104 157
213 279
517 85
517 107
734 308
517 157
616 421
517 219
886 219
517 279
517 308
517 333
517 358
658 358
263 826
734 150
692 421
795 861
213 826
517 576
0 358
734 543
616 10
415 610
263 776
517 776
517 811
924 643
886 204
450 421
517 911
517 950
554 0
554 10
554 436
554 911
554 107
415 421
554 157
795 811
95 85
500 383
104 85
554 308
554 333
554 358
263 333
263 383
149 911
602 57
554 509
554 543
268 950
268 776
104 204
924 811
554 700
602 543
924 157
149 85
554 826
886 0
415 776
167 911
149 436
149 150
658 950
217 950
765 950
319 436
602 150
319 421
765 204
602 219
217 543
467 876
50 157
602 333
95 861
602 383
50 610
924 107
734 471
213 308
500 10
602 576
602 610
104 876
500 643
602 700
602 728
602 776
602 811
95 643
602 861
554 57
467 333
839 254
616 0
263 811
616 57
886 876
734 643
365 671
0 543
616 204
554 204
616 254
450 610
517 254
616 333
149 728
950 861
365 543
370 671
616 471
924 610
616 543
616 576
616 610
467 811
40 911
616 700
415 826
40 279
415 0
319 85
616 861
370 911
692 700
886 254
217 826
658 0
658 57
0 471
658 107
263 107
658 157
415 876
658 219
50 471
692 157
50 57
616 643
658 911
658 383
658 421
0 826
924 219
213 776
658 543
658 576
217 85
213 610
450 383
658 700
658 728
554 576
467 279
500 826
658 861
658 876
795 543
658 471
692 0
692 10
692 57
692 85
692 107
765 85
104 471
692 204
692 219
795 950
415 509
950 308
658 671
765 254
692 383
415 700
692 436
734 219
692 509
692 543
0 219
319 643
602 10
692 671
95 911
692 728
467 57
692 811
415 333
692 861
268 436
692 911
692 950
734 0
734 10
734 57
313 333
734 107
924 826
167 543
734 204
692 471
886 700
734 279
263 57
554 85
734 358
734 383
765 509
734 436
602 471
734 509
450 107
734 576
734 610
839 10
415 471
554 383
795 308
268 610
734 811
500 861
734 861
602 157
616 308
734 950
467 671
40 811
765 57
0 421
765 107
765 150
795 57
467 950
602 85
365 10
795 254
365 728
450 811
765 358
517 421
167 85
313 509
765 471
734 421
765 543
50 0
765 610
765 700
167 471
765 643
765 728
765 776
658 10
765 826
167 150
602 107
95 671
602 436
167 279
795 10
765 219
795 85
370 700
658 308
795 157
839 85
795 219
616 85
616 436
40 204
415 950
95 107
795 383
217 811
795 436
924 576
795 471
415 358
217 10
795 610
104 57
839 671
795 700
213 950
40 421
365 826
467 0
50 10
795 876
795 911
313 308
839 0
313 700
924 509
795 204
839 107
415 811
50 254
839 436
839 219
924 876
500 471
839 308
839 333
104 543
950 671
313 85
467 383
839 471
217 436
95 10
839 576
658 436
839 643
765 157
839 700
40 509
268 861
839 811
415 671
839 861
839 876
839 911
839 950
500 436
839 383
0 671
517 861
886 643
886 150
554 950
450 643
500 876
616 950
886 279
765 876
924 950
886 358
924 358
886 421
795 107
886 471
886 509
40 107
886 576
886 610
40 219
886 671
658 333
765 436
886 776
319 254
886 826
40 10
268 700
886 911
886 950
924 0
924 10
500 204
149 358
839 543
924 150
149 950
924 204
365 150
924 254
217 107
924 308
924 333
886 383
500 811
924 421
950 826
924 471
839 57
924 543
795 509
554 643
517 826
365 509
924 700
217 150
924 776
554 671
0 576
886 85
602 950
924 911
886 333
950 0
950 10
0 279
950 85
554 254
517 643
795 333
95 421
950 219
950 254
517 436
217 333
365 107
167 358
217 671
450 0
950 436
104 826
950 509
950 543
50 826
950 610
104 576
213 643
319 728
313 643
839 776
95 776
517 57
692 254
Editor is loading...
Leave a Comment