Advertisement
rSofiiski

08.AnonymousThreat

Feb 19th, 2020
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.08 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3. using System.Collections.Generic;
  4.  
  5. namespace AnonymousThreat
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. List<string> input = Console.ReadLine().
  12. Split(' ').ToList();
  13. string command = " ";
  14.  
  15. while ((command = Console.ReadLine()) != "3:1")
  16. {
  17. string[] currentCommand = command.Split(' ').ToArray();
  18. if (currentCommand[0] == "merge")
  19. {
  20. string mergeStart = currentCommand[1];
  21. string mergeEnd = currentCommand[2];
  22.  
  23. int mergeStartIndex = int.Parse(mergeStart);
  24. int mergeEndIndex = int.Parse(mergeEnd);
  25.  
  26. bool startIndexOutOfRange = false;
  27. bool endIndexOutOfRange = false;
  28.  
  29. if (mergeStartIndex >= input.Count || mergeStartIndex < 0)
  30. {
  31. startIndexOutOfRange = true;
  32. }
  33. if (mergeEndIndex >= input.Count || mergeEndIndex < 0)
  34. {
  35. endIndexOutOfRange = true;
  36. }
  37.  
  38. if (!startIndexOutOfRange && !endIndexOutOfRange)
  39. {
  40. for (int i = mergeStartIndex + 1; i <= mergeEndIndex; i++)
  41. {
  42. input[mergeStartIndex] += input[i];
  43. }
  44. for (int i = mergeStartIndex + 1; i <= mergeEndIndex; i++)
  45. {
  46. input.RemoveAt(mergeStartIndex + 1);
  47. }
  48. }
  49. else if (startIndexOutOfRange && !endIndexOutOfRange)
  50. {
  51. for (int i = 1; i <= mergeEndIndex; i++)
  52. {
  53. input[0] += input[i];
  54. }
  55. for (int i = 1; i <= mergeEndIndex; i++)
  56. {
  57. input.RemoveAt(1);
  58. }
  59. }
  60. else if (!startIndexOutOfRange && endIndexOutOfRange)
  61. {
  62. for (int i = mergeStartIndex + 1; i < input.Count; i++)
  63. {
  64. input[mergeStartIndex] += input[i];
  65. }
  66. for (int i = mergeStartIndex + 1; i < input.Count; i++)
  67. {
  68. input.RemoveAt(mergeStartIndex + 1);
  69. i--;
  70. }
  71. }
  72. else
  73. {
  74. for (int i = 1; i < input.Count; i++)
  75. {
  76. input[0] += input[i];
  77. }
  78. for (int i = 1; i < input.Count; i++)
  79. {
  80. input.RemoveAt(1);
  81. }
  82. }
  83.  
  84. }
  85. else if (currentCommand[0] == "divide")
  86. {
  87. int divideElementIndex = int.Parse(currentCommand[1] + " ");
  88. int divideNumber = int.Parse(currentCommand[2] + " ");
  89.  
  90. if (input[divideElementIndex].Length % divideNumber == 0)
  91. {
  92.  
  93. string divideElement = input[divideElementIndex];
  94. input.RemoveAt(divideElementIndex);
  95. string currentNewPart = "";
  96. int insertIndex = divideElementIndex;
  97. int dividePartLength = divideElement.Length / divideNumber;
  98.  
  99. for (int i = 0; i < divideElement.Length; i++)
  100. {
  101. currentNewPart += divideElement[i];
  102. if (currentNewPart.Length == dividePartLength)
  103. {
  104. input.Insert(insertIndex, currentNewPart);
  105. insertIndex++;
  106. currentNewPart = "";
  107. }
  108. }
  109. }
  110. else
  111. {
  112. string divideElement = input[divideElementIndex];
  113. input.RemoveAt(divideElementIndex);
  114. string currentNewPart = "";
  115. int insertIndex = divideElementIndex;
  116. int dividePartLength = 0;
  117. if (divideElement.Length / divideNumber > divideElement.Length % divideNumber)
  118. {
  119. dividePartLength = divideElement.Length % divideNumber;
  120. }
  121. else
  122. {
  123. dividePartLength = divideElement.Length / divideNumber;
  124. }
  125.  
  126. for (int i = 0; i < divideElement.Length - (divideElement.Length / divideNumber); i++)
  127. {
  128. currentNewPart += divideElement[i];
  129. if (currentNewPart.Length == dividePartLength)
  130. {
  131. input.Insert(insertIndex, currentNewPart);
  132. insertIndex++;
  133. currentNewPart = "";
  134. }
  135. }
  136. for (int i = divideElement.Length - (divideElement.Length / divideNumber); i < divideElement.Length; i++)
  137. {
  138. currentNewPart += divideElement[i];
  139. }
  140. input.Insert(insertIndex, currentNewPart);
  141. }
  142. }
  143. }
  144. Console.WriteLine(string.Join(' ', input));
  145. }
  146. }
  147. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement