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

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

3
Ferhaps avatar Ferhaps 2 Точки

Благодаря !

1
Elena123456 avatar Elena123456 224 Точки

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

https://pastebin.com/K2CBMfNk

0
Axiomatik avatar Axiomatik 1541 Точки

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