Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Text.RegularExpressions;
- using System.Threading.Tasks;
- namespace Camera_View
- {
- class Program
- {
- static void Main(string[] args)
- {
- int sizeOfField = int.Parse(Console.ReadLine().Trim());
- long[] indexesOfLadybugs = Regex.Split(Console.ReadLine(), @"\s+").Select(long.Parse).ToArray();
- int[] fieldWithLadybugs = PlaceLadybugs(indexesOfLadybugs, sizeOfField);
- string input = Console.ReadLine();
- while (input != "end")
- {
- fieldWithLadybugs = MoveLadybugs(fieldWithLadybugs, input);
- input = Console.ReadLine();
- }
- Console.WriteLine(string.Join(" ", fieldWithLadybugs));
- }
- private static int[] MoveLadybugs(int[] fieldWithLadybugs, string input)
- {
- string[] commands = Regex.Split(input, @"\s+");
- int indexOfLadybug = int.Parse(commands[0]);
- if (indexOfLadybug < 0 || indexOfLadybug >= fieldWithLadybugs.Length)
- {
- return fieldWithLadybugs;
- }
- else if (fieldWithLadybugs[indexOfLadybug] == 0)
- {
- return fieldWithLadybugs;
- }
- string direction = commands[1];
- long flightDistance = long.Parse(commands[2]);
- if (direction == "right")
- {
- long indexToLand = indexOfLadybug + flightDistance;
- fieldWithLadybugs[indexOfLadybug] = 0;
- if (indexToLand >= fieldWithLadybugs.Length || indexToLand < 0)
- {
- return fieldWithLadybugs;
- }
- else if (indexToLand >= 0 && indexToLand < fieldWithLadybugs.Length)
- {
- fieldWithLadybugs = MoveCurrentLadybug(indexToLand, fieldWithLadybugs, indexOfLadybug);
- return fieldWithLadybugs;
- }
- }
- else if (direction == "left")
- {
- long indexToLand = indexOfLadybug - flightDistance;
- fieldWithLadybugs[indexOfLadybug] = 0;
- if (indexToLand < 0 || indexToLand >= fieldWithLadybugs.Length)
- {
- return fieldWithLadybugs;
- }
- else if (indexToLand >= 0 && indexToLand < fieldWithLadybugs.Length)
- {
- fieldWithLadybugs = MoveCurrentLadybug(indexToLand, fieldWithLadybugs, indexOfLadybug);
- return fieldWithLadybugs;
- }
- }
- return fieldWithLadybugs;
- }
- private static int[] MoveCurrentLadybug(long indexToLand, int[] fieldWithLadybugs, int indexOfLadybug)
- {
- if (fieldWithLadybugs[indexToLand] == 0)
- {
- fieldWithLadybugs[indexToLand] = 1;
- return fieldWithLadybugs;
- }
- else if (fieldWithLadybugs[indexToLand] != 0)
- {
- if (indexToLand > indexOfLadybug)
- {
- do
- {
- indexToLand++;
- if (indexToLand >= 0 && indexToLand < fieldWithLadybugs.Length)
- {
- if (fieldWithLadybugs[indexToLand] == 0)
- {
- fieldWithLadybugs[indexToLand] = 1;
- return fieldWithLadybugs;
- }
- }
- else
- {
- return fieldWithLadybugs;
- }
- } while (true);
- }
- else if (indexToLand < indexOfLadybug)
- {
- do
- {
- indexToLand--;
- if (indexToLand >= 0 && indexToLand < fieldWithLadybugs.Length)
- {
- if (fieldWithLadybugs[indexToLand] == 0)
- {
- fieldWithLadybugs[indexToLand] = 1;
- return fieldWithLadybugs;
- }
- }
- else
- {
- return fieldWithLadybugs;
- }
- } while (true);
- }
- }
- return fieldWithLadybugs;
- }
- private static int[] PlaceLadybugs(long[] indexesOfLadybugs, int sizeOfField)
- {
- int[] arr = new int[sizeOfField];
- for (int i = 0; i < indexesOfLadybugs.Length; i++)
- {
- if (indexesOfLadybugs[i] >= 0 && indexesOfLadybugs[i] < arr.Length)
- {
- arr[indexesOfLadybugs[i]] = 1;
- }
- }
- return arr;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement