Loading...
petarstoyanov98 avatar petarstoyanov98 47 Точки

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;

    }
}

 

Тагове:
1
Fundamentals Module 05/03/2017 20:14:52
George221b avatar George221b 64 Точки

Здравей,

тази задача беше отвратителна. Проблема е, че има 10 места, на които може да се сбърка. Пълна е с малки уловки. Ето решение, което дава 100/100 в джъдж. Ако искаш го разгледай и сравни как е при теб. 

Линк: http://pastebin.com/MMzg4aSX

Поздрави,

Георги

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.