В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
katesgo
katesgo
08.06.2022 22:56 •  Информатика

Учёные рассматривают участок поверхности Марса, который можно представить в виде последовательности точек с высотами H1, H2, ..., HN. Высота между двумя соседними точками меняется равномерно. Для исследований необходимо собрать информацию с любого отрезка участка поверхности, длина которого равна K. Для этого запланировано выбрать некоторую точку L, высадить туда марсоход и отправить его последовательно по точкам HL, HL+1, ..., HL+K.

Марсоход работает от аккумулятора. На перемещение на одну единицу вверх марсоход тратит одну единицу энергии. При перемещении на одну единицу вниз марсоход накапливает одну единицу энергии. На горизонтальное перемещение энергия не тратится. Изначально у марсохода достаточно энергии, чтобы изучить любой отрезок интересующего учёных участка, а максимальный возможный запас аккумулятора не ограничен.

Учёные хотят, чтобы для дальнейших исследований у марсохода осталось как можно больше энергии. Поэтому среди всех возможных вариантов им нужно найти такое L, чтобы итоговый запас аккумулятора после исследований оказался максимально возможным. Если таких L несколько, для определённости берется минимальное из возможных.

учёным найти номер стартовой точки L.

Входные данные
В первой строке входных данных содержится целое число N (2 ≤ N ≤ 250.000) — количество точек на интересующем учёных участке поверхности Марса.

Во второй строке содержится целое число K (1 ≤ K < N) — длина отрезка, который должен пройти марсоход.

В следующих N строках вводятся целые числа H1, H2, ..., HN (1 ≤ Hi ≤ 109) — высоты точек.

Выходные данные
Выведите единственное целое число L — номер стартовой точки для марсохода.

Показать ответ
Ответ:
Даниил12345666
Даниил12345666
01.12.2021 10:53

#include <iostream>

int main() {

  int arr[100], n, first = 0, second = 0;

  std::cin >> n;

  for (int i = 0; i < n; ++i)

      std::cin >> arr[i];

  for (int i = 1; i < n; ++i) {

      const int diff = arr[i] - arr[i - 1];

      if (diff > 0)

          if (arr[i] <= 2000)

              first += diff;

          else if (arr[i - 1] >= 2000)

              second += diff;

          else {

              first += 2000 - arr[i - 1];

              second += arr[i] - 2000;

           }

   }

  std::cout << first << ' ' << second;

  return 0;

Объяснение:

язык python

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота