Advertisement
elena_veskova

Navigation(in process)

Dec 8th, 2019
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.25 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.math.BigInteger;
  5.  
  6. public class Task {
  7.  
  8. public static void main(String[] args) throws IOException {
  9.  
  10. BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  11. int rows = Integer.parseInt(br.readLine()); // between 1 and 100
  12. int cols = Integer.parseInt(br.readLine()); // between 1 and 75
  13. int movesNum = Integer.parseInt(br.readLine()); // between 1 and 1000
  14. String[] codeNumbers = br.readLine().split(" ");
  15.  
  16. int coefficient = Math.max(rows, cols);
  17. int posX = 0;
  18. int posY = 0;
  19. int currentPosX = 4;
  20. int currentPosY = 0;
  21. int m = 0;
  22. int n = 0;
  23. int power = 0;
  24. int counter = 1;
  25. BigInteger sum = new BigInteger("1");
  26.  
  27. // boolean matrix - false
  28. boolean[][] bool = new boolean[rows][cols];
  29. // matrix - power of 2
  30. BigInteger[][] matrix = new BigInteger[rows][cols];
  31. for (int i = rows - 1; i >= 0; i--) {
  32. for (int j = 0; j < cols; j++) {
  33. matrix[i][j] = BigInteger.valueOf((long)Math.pow(2, power));
  34. power++;
  35. }
  36. power = counter;
  37. counter++;
  38. }
  39. // print matrix - power of 2
  40. for (int i = 0; i < rows; i++) {
  41. for (int j = 0; j < cols; j++) {
  42. // System.out.print(matrix[i][j] + " ");
  43. }
  44. // System.out.println();
  45. }
  46. // moves array
  47. double[] decArray = new double[movesNum];
  48. for (int i = 0; i < movesNum; i++) {
  49. decArray[i] = Double.parseDouble(codeNumbers[i]);
  50. posX = (int)(decArray[i] / coefficient);
  51. posY = (int)(decArray[i] % coefficient);
  52. while (currentPosY != posY) {
  53. if (currentPosY < posY) {
  54. m = currentPosX;
  55. n = currentPosY + 1;
  56. if (bool[m][n] == false) {
  57. sum = sum.add(matrix[m][n]);
  58. bool[m][n] = true;
  59. }
  60. currentPosY = n;
  61. } else {
  62. m = currentPosX;
  63. n = currentPosY - 1;
  64. if (bool[m][n] == false) {
  65. sum = sum.add(matrix[m][n]);
  66. bool[m][n] = true;
  67. }
  68. currentPosY = n;
  69. }
  70. }
  71. while (currentPosX != posX) {
  72. if (currentPosX > posX) {
  73. m = currentPosX - 1;
  74. if (bool[m][n] == false) {
  75. sum = sum.add(matrix[m][n]);
  76. bool[m][n] = true;
  77. }
  78. currentPosX = m;
  79. }
  80. if (currentPosX < posX) {
  81. m = currentPosX + 1;
  82. if (bool[m][n] == false) {
  83. sum = sum.add(matrix[m][n]);
  84. bool[m][n] = true;
  85. }
  86. currentPosX = m;
  87. }
  88. }
  89. }
  90. System.out.println(sum);
  91. }
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement