Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Linq;
- using System.Collections.Generic;
- namespace AnonymousThreat
- {
- class Program
- {
- static void Main(string[] args)
- {
- List<string> input = Console.ReadLine().
- Split(' ').ToList();
- string command = " ";
- while ((command = Console.ReadLine()) != "3:1")
- {
- string[] currentCommand = command.Split(' ').ToArray();
- if (currentCommand[0] == "merge")
- {
- string mergeStart = currentCommand[1];
- string mergeEnd = currentCommand[2];
- int mergeStartIndex = int.Parse(mergeStart);
- int mergeEndIndex = int.Parse(mergeEnd);
- bool startIndexOutOfRange = false;
- bool endIndexOutOfRange = false;
- if (mergeStartIndex >= input.Count || mergeStartIndex < 0)
- {
- startIndexOutOfRange = true;
- }
- if (mergeEndIndex >= input.Count || mergeEndIndex < 0)
- {
- endIndexOutOfRange = true;
- }
- if (!startIndexOutOfRange && !endIndexOutOfRange)
- {
- for (int i = mergeStartIndex + 1; i <= mergeEndIndex; i++)
- {
- input[mergeStartIndex] += input[i];
- }
- for (int i = mergeStartIndex + 1; i <= mergeEndIndex; i++)
- {
- input.RemoveAt(mergeStartIndex + 1);
- }
- }
- else if (startIndexOutOfRange && !endIndexOutOfRange)
- {
- for (int i = 1; i <= mergeEndIndex; i++)
- {
- input[0] += input[i];
- }
- for (int i = 1; i <= mergeEndIndex; i++)
- {
- input.RemoveAt(1);
- }
- }
- else if (!startIndexOutOfRange && endIndexOutOfRange)
- {
- for (int i = mergeStartIndex + 1; i < input.Count; i++)
- {
- input[mergeStartIndex] += input[i];
- }
- for (int i = mergeStartIndex + 1; i < input.Count; i++)
- {
- input.RemoveAt(mergeStartIndex + 1);
- i--;
- }
- }
- else
- {
- for (int i = 1; i < input.Count; i++)
- {
- input[0] += input[i];
- }
- for (int i = 1; i < input.Count; i++)
- {
- input.RemoveAt(1);
- }
- }
- }
- else if (currentCommand[0] == "divide")
- {
- int divideElementIndex = int.Parse(currentCommand[1] + " ");
- int divideNumber = int.Parse(currentCommand[2] + " ");
- if (input[divideElementIndex].Length % divideNumber == 0)
- {
- string divideElement = input[divideElementIndex];
- input.RemoveAt(divideElementIndex);
- string currentNewPart = "";
- int insertIndex = divideElementIndex;
- int dividePartLength = divideElement.Length / divideNumber;
- for (int i = 0; i < divideElement.Length; i++)
- {
- currentNewPart += divideElement[i];
- if (currentNewPart.Length == dividePartLength)
- {
- input.Insert(insertIndex, currentNewPart);
- insertIndex++;
- currentNewPart = "";
- }
- }
- }
- else
- {
- string divideElement = input[divideElementIndex];
- input.RemoveAt(divideElementIndex);
- string currentNewPart = "";
- int insertIndex = divideElementIndex;
- int dividePartLength = 0;
- if (divideElement.Length / divideNumber > divideElement.Length % divideNumber)
- {
- dividePartLength = divideElement.Length % divideNumber;
- }
- else
- {
- dividePartLength = divideElement.Length / divideNumber;
- }
- for (int i = 0; i < divideElement.Length - (divideElement.Length / divideNumber); i++)
- {
- currentNewPart += divideElement[i];
- if (currentNewPart.Length == dividePartLength)
- {
- input.Insert(insertIndex, currentNewPart);
- insertIndex++;
- currentNewPart = "";
- }
- }
- for (int i = divideElement.Length - (divideElement.Length / divideNumber); i < divideElement.Length; i++)
- {
- currentNewPart += divideElement[i];
- }
- input.Insert(insertIndex, currentNewPart);
- }
- }
- }
- Console.WriteLine(string.Join(' ', input));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement