Задача по ЕГЭ - 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();
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.778 из 5