• Это олимпиада по икт.

    Студент Кеша устроился на летнюю стажировку. Кеша охотно бы ходил на работу
    пешком,
    но, к его сожалению, офис компании расположен довольно далеко от дома Кеши. А поскольку в
    городе проводится спортивный праздник, общественный транспорт ходит крайне редко, и желающих
    ехать на нём очень много. Впрочем, Кеша уже давно присматривается к электросамокату, и хочет
    выяснить, много ли усилий ему придётся приложить, чтобы добраться на нём до места работы.
    Кеша уже провёл некоторые расчёты и выяснил, что его маршрут содержит в себе ровные участ-
    ки суммарной длиной p единиц, а также участки, на которых ему придётся подниматься в гору,
    суммарной длиной m единиц. Участки, на которых Кеша будет двигаться под гору, он решил не
    учитывать, поскольку электросамокат будет катиться на таких участках по инерции.
    При движении по ровному участку аккумулятор самоката будет расходовать 1 единицу ёмкости,
    а при движении в гору — 2 единицы ёмкости на единицу длины. Если же Кеша не будет включать
    электродвигатель, то для перемещения на каждой единице длины ровного участка ему потребу-
    ется приложить усилие величины a, а на каждой единице длины участка, ведущего в гору, ему
    потребуется приложить усилие величины b (b > a).
    Ёмкость аккумулятора составляет q единиц. Кеша полагает, что в разные дни он может включать
    электродвигатель на разных участках. И пока хочет узнать, какое максимальное и какое минималь-
    ное количество усилий ему придётся приложить, чтобы добраться до работы, если по дороге он
    полностью израсходует энергию, запасённую в аккумуляторе.


Ответы 1

  • Полагаю, это дубликат https://znanija.com/task/29739492, но без данных о входных/выходных данных. Тогда я продублирую решение на C#.

    using System;

    using System.Linq;

    namespace Samokat

    {

       class Program

       {

           static void Main(string[] args)

           {

               var input = Console.In

                   .ReadLine()

                   .Split(',', ' ')

                   .Where(t => !String.IsNullOrEmpty(t))

                   .Select(int.Parse)

                   .ToList();

               int flatLen = input[0];

               int uphillLen = input[1];

               int flatDrain = input[2];

               int uphillDrain = input[3];

               int fuel = input[4];

               // minimizing flat travel

               int minFlatLen = flatLen - fuel;

               minFlatLen = minFlatLen < 0 ? 0 : minFlatLen;

               int maxUphillLen = uphillLen - (fuel - (flatLen - minFlatLen)) / 2;

               maxUphillLen = maxUphillLen < 0 ? 0 : maxUphillLen;

               // minimizing uphill travel

               int minUphillLen = uphillLen - (fuel) / 2;

               minUphillLen = minUphillLen < 0 ? 0 : minUphillLen;

               int maxFlatLen = flatLen - (fuel - (uphillLen - minUphillLen) * 2);

               maxFlatLen = maxFlatLen < 0 ? 0 : maxFlatLen;

               int minFlatTravelDrain = minFlatLen * flatDrain + maxUphillLen * uphillDrain;

               int maxFlatTravelDrain = maxFlatLen * flatDrain + minUphillLen * uphillDrain;

               var minDrain = Math.Min(minFlatTravelDrain, maxFlatTravelDrain);

               var maxDrain = Math.Max(minFlatTravelDrain, maxFlatTravelDrain);

               Console.Out.WriteLine(minDrain);

               Console.Out.WriteLine(maxDrain);

           }

       }

    }

    • Автор:

      ariizgu
    • 5 лет назад
    • 0
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years