Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Linq;
- public class MainClass
- {
- public static void Main()
- {
- int numberOfLeaves = int.Parse(Console.ReadLine());
- long[] leaves = new long[numberOfLeaves];
- long[] ladybugsStart = Console.ReadLine().Split(' ').Select(long.Parse).ToArray();
- for (int i = 0; i < ladybugsStart.Length; i++)
- {
- if (ladybugsStart[i] >= 0 && ladybugsStart[i] <= numberOfLeaves)
- {
- leaves[ladybugsStart[i]] = 1;
- }
- }
- while (true)
- {
- string[] command = Console.ReadLine().Split();
- if (command[0] == "end")
- {
- break;
- }
- long selectedLadybug = long.Parse(command[0]);
- string direction = command[1];
- long flyLength = long.Parse(command[2]);
- if (flyLength < 0 && direction == "left")
- {
- direction = "right";
- flyLength *= -1;
- }
- if (leaves[selectedLadybug] == 1)
- {
- if (direction == "right")
- {
- if (selectedLadybug + flyLength > leaves.Length - 1)
- {
- leaves[selectedLadybug] = 0;
- }
- else
- {
- if (leaves[selectedLadybug + flyLength] == 0)
- {
- leaves[selectedLadybug + flyLength] = 1;
- leaves[selectedLadybug] = 0;
- }
- else
- {
- long[] smallLeaves1 = new long[leaves.Length - selectedLadybug - 1];
- Array.Reverse(leaves);
- Array.Copy(leaves, smallLeaves1, smallLeaves1.Length);
- Array.Reverse(leaves);
- Array.Reverse(smallLeaves1);
- long temp1 = 0;
- long index = Array.IndexOf(smallLeaves1, temp1);
- leaves[selectedLadybug + index + 1] = 1;
- leaves[selectedLadybug] = 0;
- }
- }
- }
- else if (direction == "left")
- {
- if (selectedLadybug - flyLength < 0)
- {
- leaves[selectedLadybug] = 0;
- }
- else
- {
- if (leaves[selectedLadybug - flyLength] == 0)
- {
- leaves[selectedLadybug - flyLength] = 1;
- leaves[selectedLadybug] = 0;
- }
- else
- {
- long temp2 = selectedLadybug;
- if (leaves.Length % 2 != 0)
- {
- temp2 += 1;
- }
- long[] smallLeaves2 = new long[leaves.Length - temp2];
- Array.Copy(leaves, smallLeaves2, smallLeaves2.Length);
- Array.Reverse(smallLeaves2);
- long temp3 = 0;
- long index2 = Array.IndexOf(smallLeaves2, temp3);
- leaves[selectedLadybug - index2 - 1] = 1;
- leaves[selectedLadybug] = 0;
- }
- }
- }
- }
- }
- Console.Write(String.Join(" ", leaves));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement