Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите решить на c#

антон чехов Ученик (77), на голосовании 3 месяца назад
Голосование за лучший ответ
Татьяна Просветленный (36197) 4 месяца назад
 using System; 
using System.Collections.Generic;
using System.Linq;

class Program
{
public class LogEntry
{
public int Day { get; set; }
public int Hour { get; set; }
public int Minute { get; set; }
public long Id { get; set; }
public char Status { get; set; }

public int TotalMinutes()
{
return Day * 24 * 60 + Hour * 60 + Minute;
}
}

public static void Main()
{
int n = int.Parse(Console.ReadLine());
var logEntries = new List();

for (int i = 0; i < n; i++)
{
var input = Console.ReadLine().Split();
logEntries.Add(new LogEntry
{
Day = int.Parse(input[0]),
Hour = int.Parse(input[1]),
Minute = int.Parse(input[2]),
Id = long.Parse(input[3]),
Status = char.Parse(input[4])
});
}

var rocketTimes = new Dictionary();
var inProgress = new Dictionary();

foreach (var entry in logEntries.OrderBy(e => e.TotalMinutes()))
{
if (entry.Status == 'A')
{
inProgress[entry.Id] = entry;
}
else if (entry.Status == 'B' || entry.Status == 'S' || entry.Status == 'C')
{
if (inProgress.ContainsKey(entry.Id))
{
var startEntry = inProgress[entry.Id];
int duration = entry.TotalMinutes() - startEntry.TotalMinutes();

if (entry.Status == 'B' || entry.Status == 'S')
{
if (!rocketTimes.ContainsKey(entry.Id))
{
rocketTimes[entry.Id] = 0;
}
rocketTimes[entry.Id] += duration;
}

if (entry.Status != 'B')
{
inProgress.Remove(entry.Id);
}
}
}
}

var result = rocketTimes.OrderBy(kv => kv.Key).Select(kv => kv.Value).ToList();
Console.WriteLine(string.Join(" ", result));
}
}
Этот код выполняет следующие действия:

Читает количество записей в логе.
Считывает сами записи в формате day hour minute id status.
Сортирует записи по времени.
Обрабатывает записи, учитывая их статус (A, B, S, C).
Подсчитывает суммарное время движения для каждой ракеты.
Выводит суммарное время для каждой ракеты в порядке возрастания их идентификаторов.
Пожалуйста, убедитесь, что у вас установлен компилятор C# (например, dotnet), чтобы скомпилировать и запустить этот код.
Похожие вопросы