1009

边界情况的考虑:只有一行,只有一列

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;

public class Main {

	static List<Integer> as;
	static List<Integer> bs;
	static int line;
	static List<Integer> indexs = new ArrayList<Integer>();
	static Map<Integer, Integer> resultMap = new HashMap<Integer, Integer>();
	static int totalNum = 0;
	static List<String> results = new ArrayList<String>();

	public static void main(String[] args) {
		Scanner cin = new Scanner(System.in);
		line = cin.nextInt();
		results.add(line + "");
		while (line != 0) {
			int j = 0;
			as = new ArrayList<Integer>();
			bs = new ArrayList<Integer>();

			int a = cin.nextInt();
			int b = cin.nextInt();
			while (a != 0 || b != 0) {
				as.add(a);
				bs.add(b);
				totalNum += b;
				a = cin.nextInt();
				b = cin.nextInt();
				j++;
			}
			if (line != 1)
				process();
			else {
				process1();
			}
			results.add(a + " " + b);
			line = cin.nextInt();
			results.add(line + "");
		}
		for (int i = 0; i < results.size(); i++) {
			System.out.println(results.get(i));
		}

	}

	private static void process1() {
		int index = 0;
		for (int i = 0; i<as.size(); i++) {
			coculate1(index, as.get(i), true);
			index += bs.get(i);
		}
		if(index != 1) {
			Collections.sort(indexs);
			int a = resultMap.get(0);
			int b = 0;
			for (int i = 1; i < indexs.size(); i++) {
				int indexNum = indexs.get(i);
				int aTemp = resultMap.get(indexNum);
				if (aTemp != a) {
					b = indexNum - b;
					results.add(a + " " + b);
					b = indexNum;
					a = aTemp;
				}
			}
			b = totalNum - b;
			results.add(a + " " + b);
		}
		resultMap.clear();
		indexs.clear();
		totalNum = 0;
	}

	private static void coculate1(int index, int value, boolean flag) {
		if (index > totalNum - 1 || index < 0) {
			return;
		}
		if (indexs.contains(index) && !flag)
			return;
		if (totalNum == 1) {
			results.add("0 1");
		} else {
			if (index == 0) {
				int a1 = getByIndex(value, index + 1);
				if (resultMap.get(index) == null) {
					indexs.add(index);
					resultMap.put(index, Math.abs(a1 - value));
				}
				if (flag) {
					coculate1(index + 1, a1, false);
				}
			} else if (index == totalNum - 1) {
				int a1 = getByIndex(value, index - 1);
				if (resultMap.get(index) == null) {
					indexs.add(index);
					resultMap.put(index, Math.abs(a1 - value));
				}
				if (flag) {
					coculate1(index - 1, a1, false);
				}
			} else {
				int a1 = getByIndex(value, index + 1);
				int a2 = getByIndex(value, index - 1);
				if (resultMap.get(index) == null) {
					indexs.add(index);
					resultMap.put(index, max(Math.abs(a1 - value), Math.abs(a2 - value)));
				}
				if (flag) {
					coculate1(index + 1, a1, false);
					coculate1(index - 1, a2, false);
				}
			}
		}
	}

	private static void process() {
		int index = 0;
		for (int i = 0; i<as.size(); i++) {
			coculate(index, as.get(i), true);
			index += bs.get(i);
		}
		coculate(totalNum - 1, as.get(as.size() - 1), true);
		Collections.sort(indexs);
		int a = resultMap.get(0);
		int b = 0;
		for (int i = 1; i < indexs.size(); i++) {
			int indexNum = indexs.get(i);
			int aTemp = resultMap.get(indexNum);
			if (aTemp != a) {
				b = indexNum - b;
				results.add(a + " " + b);
				b = indexNum;
				a = aTemp;
			}
		}
		b = totalNum - b;
		results.add(a + " " + b);
		resultMap.clear();
		indexs.clear();
		totalNum = 0;
	}

	private static void coculate(int index, int value, boolean flag) {
		if (index > totalNum - 1 || index < 0) {
			return;
		}
		if (indexs.contains(index) && !flag)
			return;
		if (index % line == 0) {
			if (index == 0) {
				int a1 = getByIndex(value, index + 1);
				int a2 = getByIndex(value, index + line);
				int a3 = getByIndex(value, index + 1 + line);
				int a4 = getByIndex(value, index - 1);
				int a5 = getByIndex(value, index - line);
				int a6 = getByIndex(value, index - line - 1);
				int a7 = getByIndex(value, index - 1 + line);
				int a8 = getByIndex(value, index - line + 1);
				if (resultMap.get(index) == null) {
					indexs.add(index);
					resultMap.put(index, max(Math.abs(a1 - value), Math.abs(a2 - value), Math.abs(a3 - value)));
				}

				if (flag) {
					coculate(index + 1, a1, false);
					coculate(index + line, a2, false);
					coculate(index + 1 + line, a3, false);
					coculate(index - 1, a4, false);
					coculate(index - line, a5, false);
					coculate(index - line - 1, a6, false);
					coculate(index - 1 + line, a7, false);
					coculate(index - line + 1, a8, false);
				}
			} else if (index == totalNum - line) {
				int a1 = getByIndex(value, index + 1);
				int a2 = getByIndex(value, index + line);
				int a3 = getByIndex(value, index + 1 + line);
				int a4 = getByIndex(value, index - 1);
				int a5 = getByIndex(value, index - line);
				int a6 = getByIndex(value, index - line - 1);
				int a7 = getByIndex(value, index - 1 + line);
				int a8 = getByIndex(value, index - line + 1);
				if (resultMap.get(index) == null) {
					indexs.add(index);
					resultMap.put(index, max(Math.abs(a1 - value), Math.abs(a5 - value), Math.abs(a8 - value)));
				}
				if (flag) {
					coculate(index + 1, a1, false);
					coculate(index + line, a2, false);
					coculate(index + 1 + line, a3, false);
					coculate(index - 1, a4, false);
					coculate(index - line, a5, false);
					coculate(index - line - 1, a6, false);
					coculate(index - 1 + line, a7, false);
					coculate(index - line + 1, a8, false);
				}

			} else {
				int a1 = getByIndex(value, index + 1);
				int a2 = getByIndex(value, index + line);
				int a3 = getByIndex(value, index + 1 + line);
				int a4 = getByIndex(value, index - 1);
				int a5 = getByIndex(value, index - line);
				int a6 = getByIndex(value, index - line - 1);
				int a7 = getByIndex(value, index - 1 + line);
				int a8 = getByIndex(value, index - line + 1);
				if (resultMap.get(index) == null) {
					indexs.add(index);
					resultMap.put(index, max(Math.abs(a1 - value), Math.abs(a5 - value), Math.abs(a8 - value),
							Math.abs(a2 - value), Math.abs(a3 - value)));
				}
				if (flag) {
					coculate(index + 1, a1, false);
					coculate(index + line, a2, false);
					coculate(index + 1 + line, a3, false);
					coculate(index - 1, a4, false);
					coculate(index - line, a5, false);
					coculate(index - line - 1, a6, false);
					coculate(index - 1 + line, a7, false);
					coculate(index - line + 1, a8, false);
				}

			}
		}

		else if (index % line == line - 1) {
			if (index == line - 1) {
				int a1 = getByIndex(value, index + 1);
				int a2 = getByIndex(value, index + line);
				int a3 = getByIndex(value, index + 1 + line);
				int a4 = getByIndex(value, index - 1);
				int a5 = getByIndex(value, index - line);
				int a6 = getByIndex(value, index - line - 1);
				int a7 = getByIndex(value, index - 1 + line);
				int a8 = getByIndex(value, index - line + 1);
				if (resultMap.get(index) == null) {
					indexs.add(index);
					resultMap.put(index, max(Math.abs(a4 - value), Math.abs(a2 - value), Math.abs(a7 - value)));

				}
				if (flag) {
					coculate(index + 1, a1, false);
					coculate(index + line, a2, false);
					coculate(index + 1 + line, a3, false);
					coculate(index - 1, a4, false);
					coculate(index - line, a5, false);
					coculate(index - line - 1, a6, false);
					coculate(index - 1 + line, a7, false);
					coculate(index - line + 1, a8, false);
				}

			} else if (index == totalNum - 1) {
				int a1 = getByIndex(value, index + 1);
				int a2 = getByIndex(value, index + line);
				int a3 = getByIndex(value, index + 1 + line);
				int a4 = getByIndex(value, index - 1);
				int a5 = getByIndex(value, index - line);
				int a6 = getByIndex(value, index - line - 1);
				int a7 = getByIndex(value, index - 1 + line);
				int a8 = getByIndex(value, index - line + 1);
				if (resultMap.get(index) == null) {
					indexs.add(index);
					resultMap.put(index, max(Math.abs(a4 - value), Math.abs(a5 - value), Math.abs(a6 - value)));

				}
				if (flag) {
					coculate(index + 1, a1, false);
					coculate(index + line, a2, false);
					coculate(index + 1 + line, a3, false);
					coculate(index - 1, a4, false);
					coculate(index - line, a5, false);
					coculate(index - line - 1, a6, false);
					coculate(index - 1 + line, a7, false);
					coculate(index - line + 1, a8, false);
				}

			} else {
				int a1 = getByIndex(value, index + 1);
				int a2 = getByIndex(value, index + line);
				int a3 = getByIndex(value, index + 1 + line);
				int a4 = getByIndex(value, index - 1);
				int a5 = getByIndex(value, index - line);
				int a6 = getByIndex(value, index - line - 1);
				int a7 = getByIndex(value, index - 1 + line);
				int a8 = getByIndex(value, index - line + 1);
				if (resultMap.get(index) == null) {
					indexs.add(index);
					resultMap.put(index, max(Math.abs(a4 - value), Math.abs(a5 - value), Math.abs(a6 - value),
							Math.abs(a2 - value), Math.abs(a7 - value)));
				}
				if (flag) {
					coculate(index + 1, a1, false);
					coculate(index + line, a2, false);
					coculate(index + 1 + line, a3, false);
					coculate(index - 1, a4, false);
					coculate(index - line, a5, false);
					coculate(index - line - 1, a6, false);
					coculate(index - 1 + line, a7, false);
					coculate(index - line + 1, a8, false);
				}

			}
		}

		else if (index < line) {
			int a1 = getByIndex(value, index + 1);
			int a2 = getByIndex(value, index + line);
			int a3 = getByIndex(value, index + 1 + line);
			int a4 = getByIndex(value, index - 1);
			int a5 = getByIndex(value, index - line);
			int a6 = getByIndex(value, index - line - 1);
			int a7 = getByIndex(value, index - 1 + line);
			int a8 = getByIndex(value, index - line + 1);
			if (resultMap.get(index) == null) {
				indexs.add(index);
				resultMap.put(index, max(Math.abs(a4 - value), Math.abs(a2 - value), Math.abs(a7 - value),
						Math.abs(a1 - value), Math.abs(a3 - value)));
			}
			if (flag) {
				coculate(index + 1, a1, false);
				coculate(index + line, a2, false);
				coculate(index + 1 + line, a3, false);
				coculate(index - 1, a4, false);
				coculate(index - line, a5, false);
				coculate(index - line - 1, a6, false);
				coculate(index - 1 + line, a7, false);
				coculate(index - line + 1, a8, false);
			}

		}

		else if (index > totalNum - 1 - line) {
			int a1 = getByIndex(value, index + 1);
			int a2 = getByIndex(value, index + line);
			int a3 = getByIndex(value, index + 1 + line);
			int a4 = getByIndex(value, index - 1);
			int a5 = getByIndex(value, index - line);
			int a6 = getByIndex(value, index - line - 1);
			int a7 = getByIndex(value, index - 1 + line);
			int a8 = getByIndex(value, index - line + 1);
			if (resultMap.get(index) == null) {
				indexs.add(index);
				resultMap.put(index, max(Math.abs(a4 - value), Math.abs(a5 - value), Math.abs(a6 - value),
						Math.abs(a1 - value), Math.abs(a8 - value)));
			}
			if (flag) {
				coculate(index + 1, a1, false);
				coculate(index + line, a2, false);
				coculate(index + 1 + line, a3, false);
				coculate(index - 1, a4, false);
				coculate(index - line, a5, false);
				coculate(index - line - 1, a6, false);
				coculate(index - 1 + line, a7, false);
				coculate(index - line + 1, a8, false);
			}
		}

		else {
			int a1 = getByIndex(value, index - 1);
			int a2 = getByIndex(value, index - line);
			int a3 = getByIndex(value, index - line - 1);
			int a4 = getByIndex(value, index + line);
			int a5 = getByIndex(value, index - 1 + line);
			int a6 = getByIndex(value, index + 1);
			int a7 = getByIndex(value, index - line + 1);
			int a8 = getByIndex(value, index + line + 1);
			if (resultMap.get(index) == null) {
				indexs.add(index);
				resultMap.put(index,
						max(Math.abs(a1 - value), Math.abs(a2 - value), Math.abs(a3 - value), Math.abs(a4 - value),
								Math.abs(a5 - value), Math.abs(a6 - value), Math.abs(a7 - value),
								Math.abs(a8 - value)));
			}
			if (flag) {
				coculate(index - 1, a1, false);
				coculate(index - line, a2, false);
				coculate(index - line - 1, a3, false);
				coculate(index + line, a4, false);
				coculate(index + line - 1, a5, false);
				coculate(index + 1, a6, false);
				coculate(index - line + 1, a7, false);
				coculate(index + line + 1, a8, false);
			}

		}
	}

	private static int getByIndex(int value, int index) {
		if(index < 0 || index > totalNum - 1) {
			return value;
		}
		int temp = 0;
		for (int i = 0; i<bs.size(); i++) {
			temp += bs.get(i);
			if (index < temp) {
				return as.get(i);
			}
		}
		return value;
	}

	private static int max(int... nums) {
		int max = 0;
		for (int i = 0; i < nums.length; i++) {
			if (nums[i] > max) {
				max = nums[i];
			}
		}
		return max;
	}
}

  

import java.util.ArrayList;import java.util.Collections;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Scanner;
public class Main {
static List<Integer> as;static List<Integer> bs;static int line;static List<Integer> indexs = new ArrayList<Integer>();static Map<Integer, Integer> resultMap = new HashMap<Integer, Integer>();static int totalNum = 0;static List<String> results = new ArrayList<String>();
public static void main(String[] args) {Scanner cin = new Scanner(System.in);line = cin.nextInt();results.add(line + "");while (line != 0) {int j = 0;as = new ArrayList<Integer>();bs = new ArrayList<Integer>();
int a = cin.nextInt();int b = cin.nextInt();while (a != 0 || b != 0) {as.add(a);bs.add(b);totalNum += b;a = cin.nextInt();b = cin.nextInt();j++;}if (line != 1)process();else {process1();}results.add(a + " " + b);line = cin.nextInt();results.add(line + "");}for (int i = 0; i < results.size(); i++) {System.out.println(results.get(i));}
}
private static void process1() {int index = 0;for (int i = 0; i<as.size(); i++) {coculate1(index, as.get(i), true);index += bs.get(i);}if(index != 1) {Collections.sort(indexs);int a = resultMap.get(0);int b = 0;for (int i = 1; i < indexs.size(); i++) {int indexNum = indexs.get(i);int aTemp = resultMap.get(indexNum);if (aTemp != a) {b = indexNum - b;results.add(a + " " + b);b = indexNum;a = aTemp;}}b = totalNum - b;results.add(a + " " + b);}resultMap.clear();indexs.clear();totalNum = 0;}
private static void coculate1(int index, int value, boolean flag) {if (index > totalNum - 1 || index < 0) {return;}if (indexs.contains(index) && !flag)return;if (totalNum == 1) {results.add("0 1");} else {if (index == 0) {int a1 = getByIndex(value, index + 1);if (resultMap.get(index) == null) {indexs.add(index);resultMap.put(index, Math.abs(a1 - value));}if (flag) {coculate1(index + 1, a1, false);}} else if (index == totalNum - 1) {int a1 = getByIndex(value, index - 1);if (resultMap.get(index) == null) {indexs.add(index);resultMap.put(index, Math.abs(a1 - value));}if (flag) {coculate1(index - 1, a1, false);}} else {int a1 = getByIndex(value, index + 1);int a2 = getByIndex(value, index - 1);if (resultMap.get(index) == null) {indexs.add(index);resultMap.put(index, max(Math.abs(a1 - value), Math.abs(a2 - value)));}if (flag) {coculate1(index + 1, a1, false);coculate1(index - 1, a2, false);}}}}
private static void process() {int index = 0;for (int i = 0; i<as.size(); i++) {coculate(index, as.get(i), true);index += bs.get(i);}coculate(totalNum - 1, as.get(as.size() - 1), true);Collections.sort(indexs);int a = resultMap.get(0);int b = 0;for (int i = 1; i < indexs.size(); i++) {int indexNum = indexs.get(i);int aTemp = resultMap.get(indexNum);if (aTemp != a) {b = indexNum - b;results.add(a + " " + b);b = indexNum;a = aTemp;}}b = totalNum - b;results.add(a + " " + b);resultMap.clear();indexs.clear();totalNum = 0;}
private static void coculate(int index, int value, boolean flag) {if (index > totalNum - 1 || index < 0) {return;}if (indexs.contains(index) && !flag)return;if (index % line == 0) {if (index == 0) {int a1 = getByIndex(value, index + 1);int a2 = getByIndex(value, index + line);int a3 = getByIndex(value, index + 1 + line);int a4 = getByIndex(value, index - 1);int a5 = getByIndex(value, index - line);int a6 = getByIndex(value, index - line - 1);int a7 = getByIndex(value, index - 1 + line);int a8 = getByIndex(value, index - line + 1);if (resultMap.get(index) == null) {indexs.add(index);resultMap.put(index, max(Math.abs(a1 - value), Math.abs(a2 - value), Math.abs(a3 - value)));}
if (flag) {coculate(index + 1, a1, false);coculate(index + line, a2, false);coculate(index + 1 + line, a3, false);coculate(index - 1, a4, false);coculate(index - line, a5, false);coculate(index - line - 1, a6, false);coculate(index - 1 + line, a7, false);coculate(index - line + 1, a8, false);}} else if (index == totalNum - line) {int a1 = getByIndex(value, index + 1);int a2 = getByIndex(value, index + line);int a3 = getByIndex(value, index + 1 + line);int a4 = getByIndex(value, index - 1);int a5 = getByIndex(value, index - line);int a6 = getByIndex(value, index - line - 1);int a7 = getByIndex(value, index - 1 + line);int a8 = getByIndex(value, index - line + 1);if (resultMap.get(index) == null) {indexs.add(index);resultMap.put(index, max(Math.abs(a1 - value), Math.abs(a5 - value), Math.abs(a8 - value)));}if (flag) {coculate(index + 1, a1, false);coculate(index + line, a2, false);coculate(index + 1 + line, a3, false);coculate(index - 1, a4, false);coculate(index - line, a5, false);coculate(index - line - 1, a6, false);coculate(index - 1 + line, a7, false);coculate(index - line + 1, a8, false);}
} else {int a1 = getByIndex(value, index + 1);int a2 = getByIndex(value, index + line);int a3 = getByIndex(value, index + 1 + line);int a4 = getByIndex(value, index - 1);int a5 = getByIndex(value, index - line);int a6 = getByIndex(value, index - line - 1);int a7 = getByIndex(value, index - 1 + line);int a8 = getByIndex(value, index - line + 1);if (resultMap.get(index) == null) {indexs.add(index);resultMap.put(index, max(Math.abs(a1 - value), Math.abs(a5 - value), Math.abs(a8 - value),Math.abs(a2 - value), Math.abs(a3 - value)));}if (flag) {coculate(index + 1, a1, false);coculate(index + line, a2, false);coculate(index + 1 + line, a3, false);coculate(index - 1, a4, false);coculate(index - line, a5, false);coculate(index - line - 1, a6, false);coculate(index - 1 + line, a7, false);coculate(index - line + 1, a8, false);}
}}
else if (index % line == line - 1) {if (index == line - 1) {int a1 = getByIndex(value, index + 1);int a2 = getByIndex(value, index + line);int a3 = getByIndex(value, index + 1 + line);int a4 = getByIndex(value, index - 1);int a5 = getByIndex(value, index - line);int a6 = getByIndex(value, index - line - 1);int a7 = getByIndex(value, index - 1 + line);int a8 = getByIndex(value, index - line + 1);if (resultMap.get(index) == null) {indexs.add(index);resultMap.put(index, max(Math.abs(a4 - value), Math.abs(a2 - value), Math.abs(a7 - value)));
}if (flag) {coculate(index + 1, a1, false);coculate(index + line, a2, false);coculate(index + 1 + line, a3, false);coculate(index - 1, a4, false);coculate(index - line, a5, false);coculate(index - line - 1, a6, false);coculate(index - 1 + line, a7, false);coculate(index - line + 1, a8, false);}
} else if (index == totalNum - 1) {int a1 = getByIndex(value, index + 1);int a2 = getByIndex(value, index + line);int a3 = getByIndex(value, index + 1 + line);int a4 = getByIndex(value, index - 1);int a5 = getByIndex(value, index - line);int a6 = getByIndex(value, index - line - 1);int a7 = getByIndex(value, index - 1 + line);int a8 = getByIndex(value, index - line + 1);if (resultMap.get(index) == null) {indexs.add(index);resultMap.put(index, max(Math.abs(a4 - value), Math.abs(a5 - value), Math.abs(a6 - value)));
}if (flag) {coculate(index + 1, a1, false);coculate(index + line, a2, false);coculate(index + 1 + line, a3, false);coculate(index - 1, a4, false);coculate(index - line, a5, false);coculate(index - line - 1, a6, false);coculate(index - 1 + line, a7, false);coculate(index - line + 1, a8, false);}
} else {int a1 = getByIndex(value, index + 1);int a2 = getByIndex(value, index + line);int a3 = getByIndex(value, index + 1 + line);int a4 = getByIndex(value, index - 1);int a5 = getByIndex(value, index - line);int a6 = getByIndex(value, index - line - 1);int a7 = getByIndex(value, index - 1 + line);int a8 = getByIndex(value, index - line + 1);if (resultMap.get(index) == null) {indexs.add(index);resultMap.put(index, max(Math.abs(a4 - value), Math.abs(a5 - value), Math.abs(a6 - value),Math.abs(a2 - value), Math.abs(a7 - value)));}if (flag) {coculate(index + 1, a1, false);coculate(index + line, a2, false);coculate(index + 1 + line, a3, false);coculate(index - 1, a4, false);coculate(index - line, a5, false);coculate(index - line - 1, a6, false);coculate(index - 1 + line, a7, false);coculate(index - line + 1, a8, false);}
}}
else if (index < line) {int a1 = getByIndex(value, index + 1);int a2 = getByIndex(value, index + line);int a3 = getByIndex(value, index + 1 + line);int a4 = getByIndex(value, index - 1);int a5 = getByIndex(value, index - line);int a6 = getByIndex(value, index - line - 1);int a7 = getByIndex(value, index - 1 + line);int a8 = getByIndex(value, index - line + 1);if (resultMap.get(index) == null) {indexs.add(index);resultMap.put(index, max(Math.abs(a4 - value), Math.abs(a2 - value), Math.abs(a7 - value),Math.abs(a1 - value), Math.abs(a3 - value)));}if (flag) {coculate(index + 1, a1, false);coculate(index + line, a2, false);coculate(index + 1 + line, a3, false);coculate(index - 1, a4, false);coculate(index - line, a5, false);coculate(index - line - 1, a6, false);coculate(index - 1 + line, a7, false);coculate(index - line + 1, a8, false);}
}
else if (index > totalNum - 1 - line) {int a1 = getByIndex(value, index + 1);int a2 = getByIndex(value, index + line);int a3 = getByIndex(value, index + 1 + line);int a4 = getByIndex(value, index - 1);int a5 = getByIndex(value, index - line);int a6 = getByIndex(value, index - line - 1);int a7 = getByIndex(value, index - 1 + line);int a8 = getByIndex(value, index - line + 1);if (resultMap.get(index) == null) {indexs.add(index);resultMap.put(index, max(Math.abs(a4 - value), Math.abs(a5 - value), Math.abs(a6 - value),Math.abs(a1 - value), Math.abs(a8 - value)));}if (flag) {coculate(index + 1, a1, false);coculate(index + line, a2, false);coculate(index + 1 + line, a3, false);coculate(index - 1, a4, false);coculate(index - line, a5, false);coculate(index - line - 1, a6, false);coculate(index - 1 + line, a7, false);coculate(index - line + 1, a8, false);}}
else {int a1 = getByIndex(value, index - 1);int a2 = getByIndex(value, index - line);int a3 = getByIndex(value, index - line - 1);int a4 = getByIndex(value, index + line);int a5 = getByIndex(value, index - 1 + line);int a6 = getByIndex(value, index + 1);int a7 = getByIndex(value, index - line + 1);int a8 = getByIndex(value, index + line + 1);if (resultMap.get(index) == null) {indexs.add(index);resultMap.put(index,max(Math.abs(a1 - value), Math.abs(a2 - value), Math.abs(a3 - value), Math.abs(a4 - value),Math.abs(a5 - value), Math.abs(a6 - value), Math.abs(a7 - value),Math.abs(a8 - value)));}if (flag) {coculate(index - 1, a1, false);coculate(index - line, a2, false);coculate(index - line - 1, a3, false);coculate(index + line, a4, false);coculate(index + line - 1, a5, false);coculate(index + 1, a6, false);coculate(index - line + 1, a7, false);coculate(index + line + 1, a8, false);}
}}
private static int getByIndex(int value, int index) {if(index < 0 || index > totalNum - 1) {return value;}int temp = 0;for (int i = 0; i<bs.size(); i++) {temp += bs.get(i);if (index < temp) {return as.get(i);}}return value;}
private static int max(int... nums) {int max = 0;for (int i = 0; i < nums.length; i++) {if (nums[i] > max) {max = nums[i];}}return max;}}

 

posted @ 2017-10-31 10:36  啊啊啊阿坤  阅读(310)  评论(0)    收藏  举报