Advertisement
Guest User

Untitled

a guest
Mar 29th, 2020
274
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.71 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3.  
  4. namespace LadyBugs
  5. {
  6. class Program
  7. {
  8. static void Main(string[] args)
  9. {
  10. int sizeOfField = int.Parse(Console.ReadLine());
  11. int[] indexWithLadyBugs = Console.ReadLine().Split().Select(int.Parse).ToArray();
  12. int[] field = new int[sizeOfField];
  13. for (int i = 0; i < indexWithLadyBugs.Length; i++)
  14. {
  15. for (int j = 0; j < field.Length; j++)
  16. {
  17. if (j == indexWithLadyBugs[i])
  18. {
  19. field[j] = 1;
  20. }
  21. }
  22. }
  23.  
  24. while (true)
  25. {
  26. string[] input = Console.ReadLine().Split();
  27. if (input[0] == "end")
  28. {
  29. break;
  30. }
  31. string direction = input[1];
  32. int flyLength = int.Parse(input[2]);
  33. int ladyBugToFlyIndex = int.Parse(input[0]);
  34.  
  35. // 1-во, проверяваме граничните стойности, ако е true, пускаме нов инпут...;
  36. if (ladyBugToFlyIndex > field.Length - 1 || ladyBugToFlyIndex < 0 || field[ladyBugToFlyIndex] == 0)
  37. {
  38. continue;
  39. }
  40. // 2-ро, както си се усетил сменяме посока при отрицателна ст-т на дължината;
  41. if (flyLength < 0 && direction == "right")
  42. {
  43. direction = "left";
  44. flyLength = Math.Abs(flyLength);
  45. }
  46.  
  47. else if (flyLength < 0 && direction == "left")
  48. {
  49. direction = "right";
  50. flyLength = Math.Abs(flyLength);
  51. }
  52. //3-то бубата отлита от текущата позиция;
  53. field[ladyBugToFlyIndex] = 0;
  54.  
  55. //4- то търсим и нова позиция по масива... докато /while/ не излезе от него;
  56. while (ladyBugToFlyIndex >= 0 && ladyBugToFlyIndex <= field.Length - 1)
  57. {
  58. if (direction == "left")
  59. {
  60. //проверяваме дали не е излязла преждевремнно и чупим цикъла;
  61. if (ladyBugToFlyIndex - flyLength < 0)
  62. {
  63. break;
  64. }
  65. //ако не е излязла..
  66. else
  67. {
  68. //първо проверяваме дали е свободно полето на което се гласи да кацне ... ако да каца и чупим цикъла;
  69. if (field[ladyBugToFlyIndex - flyLength] == 0)
  70. {
  71. field[ladyBugToFlyIndex - flyLength] = 1;
  72. break;
  73. }
  74. // ако не е свободно продължава в същата посока със същата дължина;
  75. else
  76. {
  77. ladyBugToFlyIndex -= flyLength;
  78. }
  79. }
  80. }
  81. // тука логиката е наобратно на лявата посока(обяснена по-горе), с разликата само в границата на масива надясно и това че добавяме (+) дължината на полета;
  82. else if (direction == "right")
  83. {
  84. if (ladyBugToFlyIndex + flyLength > field.Length - 1)
  85. {
  86. break;
  87. }
  88. else
  89. {
  90. if (field[ladyBugToFlyIndex + flyLength] == 0)
  91. {
  92. field[ladyBugToFlyIndex + flyLength] = 1;
  93. break;
  94. }
  95. else
  96. {
  97. ladyBugToFlyIndex += flyLength;
  98. }
  99. }
  100. }
  101. }
  102. }
  103. // дано е полезно :)
  104. Console.WriteLine(string.Join(" ", field));
  105. }
  106. }
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement