miroslavbstoyanov

Untitled

Jan 29th, 2018
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.63 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3.  
  4. namespace _11._Parking_System
  5. {
  6. class Program
  7. {
  8. static void Main(string[] args)
  9. {
  10. int[] matrixSize = Console.ReadLine().Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToArray();
  11. bool[][] matrix = new bool[matrixSize[0]][];
  12.  
  13. string input = "";
  14. while ((input = Console.ReadLine()) != "stop")
  15. {
  16. int[] splitInput = input.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToArray();
  17. int entryRow = splitInput[0];
  18. int parkingRow = splitInput[1];
  19. int parkingColl = splitInput[2];
  20.  
  21. if (matrix[parkingRow] == null)
  22. {
  23. matrix[parkingRow] = new bool[matrixSize[1]];
  24. }
  25.  
  26. int position = 0;
  27. bool parked = false;
  28. if (matrix[parkingRow][parkingColl] == false)
  29. {
  30. matrix[parkingRow][parkingColl] = true;
  31. parked = true;
  32. position = CountParkingPosition(matrix, entryRow, parkingRow, parkingColl);
  33. }
  34. else
  35. {
  36. int indexEmptyPositionBefore = int.MaxValue;
  37. int indexEmptyPositionAfter = int.MaxValue;
  38.  
  39. for (int coll = parkingColl - 1; coll > 0; coll--)
  40. {
  41. if (matrix[parkingRow][coll] == false)
  42. {
  43. indexEmptyPositionBefore = coll;
  44. parked = true;
  45. break;
  46. }
  47. }
  48. for (int coll = parkingColl + 1; coll < matrix[parkingRow].Length; coll++)
  49. {
  50. if (matrix[parkingRow][coll] == false)
  51. {
  52. indexEmptyPositionAfter = coll;
  53. parked = true;
  54. break;
  55. }
  56. }
  57. if (parked)
  58. {
  59. int diffBefore = Math.Abs(parkingColl - indexEmptyPositionBefore);
  60. int diffAfter = Math.Abs(parkingColl - indexEmptyPositionAfter);
  61.  
  62. if (diffBefore <= diffAfter)
  63. {
  64. matrix[parkingRow][indexEmptyPositionBefore] = true;
  65. position = CountParkingPosition(matrix, entryRow, parkingRow, indexEmptyPositionBefore);
  66. }
  67. else
  68. {
  69. matrix[parkingRow][indexEmptyPositionAfter] = true;
  70. position = CountParkingPosition(matrix, entryRow, parkingRow, indexEmptyPositionAfter);
  71. }
  72. }
  73. }
  74.  
  75. if (parked)
  76. {
  77. Console.WriteLine(position);
  78. }
  79. else
  80. {
  81. Console.WriteLine("Row {0} full", parkingRow);
  82. }
  83. }
  84. }
  85. private static int CountParkingPosition(bool[][] matrix, int entryRow, int parkingRow, int parkingColl)
  86. {
  87. int position = 0;
  88. int row = Math.Abs(entryRow - parkingRow);
  89. int coll = parkingColl + 1;
  90. position = coll + row;
  91. return position;
  92. }
  93. }
  94. }
Advertisement
Add Comment
Please, Sign In to add comment