02. Ladybugs
Здравейте колеги, от няколко часа мъча тази задача. Джъджа дава 50 точки. Останалите 5 теста гърмят с грешка от вида: "Грешен отговор". Ще съм ви много благодарен, ако ударите едно рамо.
Ето и кода:
using System;
using System.Collections.Generic;
using System.Linq;
class LadyBugs
{
    static void Main()
    {
        int size = int.Parse(Console.ReadLine());
        int[] indexes = Console.ReadLine().Split().Select(int.Parse).ToArray();
        string[] command = Console.ReadLine().Split();
        int[] initialField = new int[size];
        foreach (var index in indexes)
        {
            if (InRange(index, size))
            {
                initialField[index] = 1;
            }
        }
        while (command[0] != "end")
        {
            int index = int.Parse(command[0]);
            if (InRange(index, size))
            {
                switch (command[1])
                {
                    case "right":
                        initialField = GetFieldRight(initialField, size, command);
                        break;
                    case "left":
                        initialField = GetFieldLeft(initialField, size, command);
                        break;
                }
            }
            command = Console.ReadLine().Split();
        }
        Console.WriteLine($"{string.Join(" ", initialField)}");
    }
    private static bool InRange(int i, int size)
    {
        bool isTrue = true;
        if (i >= size || i < 0)
        {
            isTrue = false;
        }
        return isTrue;
    }
    private static int[] GetFieldLeft(int[] initialField, int size, string[] command)
    {
        int index = int.Parse(command[0]);
        int duljina = int.Parse(command[2]);
        if (initialField[index] == 0 || !InRange(index, size))
        {
            return initialField;
        }
        initialField[index] = 0;
        for (int i = index - duljina; i > 0; i -= duljina)
        {
            if (initialField[i] == 0)
            {
                initialField[i] = 1;
                break;
            }
            else
            {
                continue;
            }
        }
        return initialField;
    }
    private static int[] GetFieldRight(int[] initialField, int size, string[] command)
    {
        int index = int.Parse(command[0]);
        int duljina = int.Parse(command[2]);
        if (initialField[index] == 0 || !InRange(index, size))
        {
            return initialField;
        }
        initialField[index] = 0;
        for (int i = index + duljina; i < initialField.Length; i += duljina)
        {
            if (initialField[i] == 0)
            {
                initialField[i] = 1;
                break;
            }
            else
            {
                continue;
            }
        }
        return initialField;
    }
}