03. Moving Target
Здравейте, може ли малко помощ за тази задача: https://judge.softuni.bg/Contests/Practice/Index/2305#2
Получавам 50/100 и run time error, но не разбирам защо.
https://pastebin.com/ur7UNygE
Благодаря предварително!
Здравейте, може ли малко помощ за тази задача: https://judge.softuni.bg/Contests/Practice/Index/2305#2
Получавам 50/100 и run time error, но не разбирам защо.
https://pastebin.com/ur7UNygE
Благодаря предварително!
Здравейте,
заповядайте поправеното решение 100/100 и с обясняния къде какво е добавено. Според мен решението ви е много добро, само с една правописна грешка за валидацията на идекса на ред 53, която впрочем сте я направили правилно за другите команди. И от условието не става ясно, че за Shoot командата трябва да се направи допълнително една проверка дали стойността на таргета е по-голяма от power и чак тогава трябва да се редуцира стойността му.
Поздрави и успех!
using System;
using System.Collections.Generic;
using System.Linq;
namespace Moving_Target
{
class Program
{
static void Main(string[] args)
{
List<int> targets = Console.ReadLine()
.Split(" ", StringSplitOptions.RemoveEmptyEntries)
.Select(int.Parse)
.ToList();
string command = Console.ReadLine();
while (command != "End")
{
string[] comArg = command.Split(" ", StringSplitOptions.RemoveEmptyEntries).ToArray();
string firstCom = comArg[0];
int index = int.Parse(comArg[1]);
int power = int.Parse(comArg[2]);
if (firstCom == "Shoot")
{
if (index >= 0 && index < targets.Count)
{
if (targets[index] > power) // if targets is bigger than power
{
targets[index] -= power;
}
else
{
targets.RemoveAt(index);
}
}
}
else if (firstCom == "Add")
{
if (index >= 0 && index < targets.Count)
{
targets.Insert(index, power);
}
else
{
Console.WriteLine($"Invalid placement!");
}
}
else if (firstCom == "Strike")
{
if (index - power >= 0 && index + power < targets.Count) // validate index and radius
{
targets.RemoveRange(index - power, power * 2 + 1);
}
else
{
Console.WriteLine($"Strike missed!");
}
}
command = Console.ReadLine();
}
Console.WriteLine(string.Join("|", targets));
}
}
}
И още нещо- съвсем в началото сте дефинирали, че командата ще има име, индекс и сила. Това съм го запазила така за всички команди. Но най-удачния вариант би бил да си се дефинират имената за всяка една команда, както си е по условие, но все пак на Judge това не му пречи.
Много ви благодаря :) Изчерпателен отговор и ми помогнахте :)