04. MOBA Challenger
https://pastebin.com/zV6Yjr5d ----- Решението ми!
https://judge.softuni.bg/Contests/Practice/Index/997#1 ----- Условие
Някой може ли да ми кажe защо не ми минават последните 2 теста
https://pastebin.com/zV6Yjr5d ----- Решението ми!
https://judge.softuni.bg/Contests/Practice/Index/997#1 ----- Условие
Някой може ли да ми кажe защо не ми минават последните 2 теста
След като има дуел и някой е премахнат трябва да излезеш от foreach-a
защото после се опитваш отново да го премахнеш, а той не съществува.
Ето поправката:
using System;
using System.Collections.Generic;
using System.Linq;
namespace _04._MOBA_Challenger
{
class Program
{
static void Main(string[] args)
{
Dictionary<string, Dictionary<string, int>> playerInfo = new Dictionary<string, Dictionary<string, int>>();
Dictionary<string, int> skills = new Dictionary<string, int>();
while (true)
{
List<string> person = Console.ReadLine().Split(new char[] { ' ', '-', '>' }, StringSplitOptions.RemoveEmptyEntries).ToList();
if (person[0] == "Season" && person[1] == "end")
{
break;
}
if (!person.Contains("vs"))
{
string player = person[0];
string position = person[1];
int skill = int.Parse(person[2]);
if (!playerInfo.ContainsKey(player))
{
playerInfo.Add(player, new Dictionary<string, int>());
}
if (!playerInfo[player].ContainsKey(position))
{
playerInfo[player].Add(position, skill);
}
else
{
if (playerInfo[player][position] < skill)
{
playerInfo[player][position] = skill;
}
}
}
else
{
string battle1 = person[0];
string battle2 = person[2];
if (playerInfo.ContainsKey(battle1) && playerInfo.ContainsKey(battle2))
{
bool demoted = false;
foreach (var firstPlayer in playerInfo[battle1])
{
foreach (var secondPlayer in playerInfo[battle2])
{
if (firstPlayer.Key == secondPlayer.Key)
{
if (firstPlayer.Value > secondPlayer.Value)
{
playerInfo.Remove(battle2);
demoted = true;
break;
}
else if (secondPlayer.Value > firstPlayer.Value)
{
playerInfo.Remove(battle1);
demoted = true;
break;
}
}
}
if (demoted)
{
break;
}
}
}
}
}
foreach (var item in playerInfo.OrderByDescending(x => x.Value.Values.Sum()).ThenBy(x => x.Key))
{
Console.WriteLine($"{item.Key}: {item.Value.Values.Sum()} skill");
foreach (var stats in item.Value.OrderByDescending(x => x.Value).ThenBy(x => x.Key))
{
Console.WriteLine($"- {stats.Key} <::> {stats.Value}");
}
}
}
}
}
Евала, брато!
Докато писах дуелите си сложих нотабене за тия брейкове и като почнах да тествам абсолютно забравих :)