Професионална програма
Loading...
+ Нов въпрос
EvgeniVT avatar EvgeniVT 61 Точки
Best Answer

Ето тук съм ти преправил малко кода https://pastebin.com/fPfxqdYxСлучаите когато индекса е извън границите не е нужно да махаш и да слагаш елементи в списъка. Само записваш стойността на тази която остава в клетка на тази която се маха. Предполагам, че грешките идват от това че точно си указал с цифра елемента с кой индекс да се махне което в даден случай да не е коректно.

3
Ferhaps avatar Ferhaps 2 Точки

Благодаря !

1
Elena123456 avatar Elena123456 235 Точки

Здравейте, може ли малко помощ и на мен за тази задача? Два теста ми гръмят 80/100- Incorect Answer, тоест не  излизам от границите на масива. Дебъгвах няколко пъти, но не мога да открия нищо. С дадените инпути в условието получавам правилните аутпути.

https://pastebin.com/K2CBMfNk

0
Axiomatik avatar Axiomatik 2078 Точки

From what I can see the only problem was on lines 42 + 62, since you didn't change the values inside of the original collection, but overwrote an external int value with a new int value from the collection :

 

firstElement = listOfDistances[listOfDistances.Count – 1];

instead of :

listOfDistances[0] = listOfDistances[listOfDistances.Count – 1];

 

This would have otherwise worked with reference-type data (objects, collections, …), but unfortunately not with primitive-type data (double, int, string, ...).

I also removed string.join at line 80, you can directly print out the final sum. For additional, try to refactor the code by using one for-loop for all three if-else validations.

Can't test the solution in judge, but I think this should do it.

Best,

Code:

using System;
using System.Linq;
using System.Collections.Generic;


namespace PokemonDontGo
{
    class MainClass
    {
        public static void Main(string[] args)
        {
            List<int> listOfDistances = Console.ReadLine().Split().Select(int.Parse).ToList();

            List<int> removedElements = new List<int>();

            while (listOfDistances.Count != 0)
            {
                int index = int.Parse(Console.ReadLine());

                if (index >= 0 && index < listOfDistances.Count)
                {
                    int distance = listOfDistances[index];
                    removedElements.Add(distance);
                    listOfDistances.RemoveAt(index);

                    for (int i = 0; i <= listOfDistances.Count - 1; i++)
                    {
                        if (listOfDistances[i] <= distance)
                        {
                            listOfDistances[i] = listOfDistances[i] + distance;
                        }
                        else if (listOfDistances[i] > distance)
                        {
                            listOfDistances[i] = listOfDistances[i] - distance;
                        }
                    }
                }
                else if (index < 0)
                {
                    int firstElement = listOfDistances[0];
                    removedElements.Add(firstElement);
                    //firstElement = listOfDistances[listOfDistances.Count - 1];
                    listOfDistances[0] = listOfDistances[listOfDistances.Count - 1];

                    for (int i = 0; i < listOfDistances.Count; i++)
                    {
                        if (listOfDistances[i] <= firstElement)
                        {
                            listOfDistances[i] = listOfDistances[i] + firstElement;
                        }
                        else if (listOfDistances[i] > firstElement)
                        {
                            listOfDistances[i] = listOfDistances[i] - firstElement;
                        }
                    }
                }
                else if (index >= listOfDistances.Count)
                {
                    int firstElement = listOfDistances[0];
                    int lastElement = listOfDistances[listOfDistances.Count - 1];
                    removedElements.Add(lastElement);
                    //lastElement = firstElement;
                    listOfDistances[listOfDistances.Count - 1] = firstElement;

                    for (int i = 0; i < listOfDistances.Count; i++)
                    {
                        if (listOfDistances[i] <= lastElement)
                        {
                            listOfDistances[i] = listOfDistances[i] + lastElement;
                        }
                        else if (listOfDistances[i] > lastElement)
                        {
                            listOfDistances[i] = listOfDistances[i] - lastElement;
                        }
                    }
                }
            }

            //Console.WriteLine(string.Join(" ", removedElements.Sum()));
            Console.WriteLine(removedElements.Sum());
        }
    }
}
 

 

 

1
Hvpetrow avatar Hvpetrow 11 Точки

Ето едно лесно за разбиране опростено решение ,даващо 100 от 100 , https://pastebin.com/WY0Gs2C3 

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