Задача по ЕГЭ - C#
Формулировка задачи:
Помогите решить задачу.
Для автоматизированной системы управления движением городских пассажирских автобусов требуется написать программу, которая решает следующую задачу.
На некоторой остановке в течение одного часа для каждого пассажирского автобуса фиксируется время прибытия в минутах (целое число от 0 до 60), номер маршрута (целое число), название предприятия (текстовая строка 20 символов). Все автобусы одного маршрута принадлежат одному предприятию; одно предприятие может обслуживать несколько маршрутов. Для каждого маршрута задан плановый интервал движения в минутах (целое число от 5 до 15) — промежуток времени между моментами при-хода автобусов данного маршрута. Если автобусы некоторого маршрута допускают интервал движения, превышающий плановый более чем на 2 минуты, то на предприятие начисляется по одному штрафному баллу за каждую минуту.
Напечатать список маршрутов и предприятий, чьи автобусы допустили нарушения, и число штрафных баллов в виде < Номер маршрута >< Пред-приятие > < Число штрафных баллов >.
Исходные данные вводятся в компьютер в следующем порядке:
Сначала вводится число М — число маршрутов, проходящих через данную остановку, а затем вводится М строк вида < номер маршрута > < интервал движения> <название предприятия>. Здесь < номер маршрута > — разные целые числа в количестве М, < интервал движения > — целые числа от 5 до 15, < название предприятия > — строка символов не боkее 20.
Далее вводится число N — число прошедших через остановку автобусов, затем вводится N строк вида < время прибытия > < номер марш-рутам <Время прибытия> — целые числа от 0 до 60, вводятся в порядке неубывания, < номер маршрута > — целые числа, каждое число обязательно совпадает с одним из < номеров маршрута >, введенных выше.
Решение задачи: «Задача по ЕГЭ»
textual
Листинг программы
using System; using System.Collections.Generic; namespace Codeforces.Div2._181 { internal class Program { class BusRoute { private string Name { get; set; } private int No { get; set; } private int Fine { get; set; } private readonly int _gap; private int _lastTime; public bool isFine { get { return Fine > 0; } } public BusRoute(string name, int no, int gap) { Name = name; No = no; _gap = gap; _lastTime = 0; Fine = 0; } public void Calculate(int time) { if (_lastTime != 0) { int t = (time - _lastTime) - _gap; if (t > 2) Fine += t; } _lastTime = time; } public override string ToString() { return string.Format("{0} {1} {2}", No, Name, Fine); } } private static void Resolve() { int m = int.Parse(Console.ReadLine()); var dic = new Dictionary<int, BusRoute>(); for (int i = 0; i < m; ++i) { string[] ss = Console.ReadLine().Split(); int no = int.Parse(ss[0]); var br = new BusRoute(ss[2], no, int.Parse(ss[1])); dic.Add(no, br); } int n = int.Parse(Console.ReadLine()); for (int i = 0; i < n; ++i) { string[] ss = Console.ReadLine().Split(); int no = int.Parse(ss[1]); int time = int.Parse(ss[0]); dic[no].Calculate(time); } foreach (var br in dic.Values) { if (br.isFine) Console.WriteLine(br); } } private static void Main(string[] args) { Resolve(); Console.ReadKey(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д