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

Задача 4: Железная дорога Вите на день рождения подарили Очень Большую Игрушечную Железную Дорогу. Она представляет собой два параллельных пути, по которым движутся поезда во встречных направлениях. В центре находится станция, а железная дорога очень большая, поэтому можно считать пути бесконечными в обе стороны.

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

Входные данные
Введём на железной дороге координаты, считая, что станция находится в начале координат, а все поезда первоначально находятся в целочисленных точках координатной прямой. Сами поезда также будем считать точками. За одну секунду координаты всех поездов изменяются на +1 или на −1. Поезда движутся с равными скоростями, первоначально никакие два поезда, движущиеся в одном направлении, не находятся в одной точке.

Первая строка входных данных содержит целое число N — количество поездов, движущихся в положительном направлении. Вторая строка входных данных содержит целое число M — количество поездов, движущихся в отрицательном направлении. Ограничения: N ≥ 0, M ≥ 0, 1 ≤ N + M ≤ 105.

Следующие N строк содержат N чисел ai (|ai| ≤ 109) — первоначальные координаты поездов, движущихся в положительном направлении. Все числа ai различны и заданы в порядке возрастания.

Следующие M строк содержат M чисел bj (|bj| ≤ 109) — первоначальные координаты поездов, движущихся в отрицательном направлении. Все числа bj различны и заданы в порядке возрастания.

Выходные данные
Программа должна вывести единственное целое число t — момент времени в секундах после запуска игры, в который суммарное расстояние всех поездов до станции будет минимальным. Если возможных правильных ответов несколько, то программа должна вывести любой из них. Если после старта игры суммарное расстояние всех поездов до станции будет всегда больше, чем в момент запуска игры, то правильным ответом будет t = 0.

Система оценивания
Решения, правильно работающие, когда N ≤ 100, |ai| ≤ 100, |bj| ≤ 100, будут оцениваться в

Решения, правильно работающие, когда N ≤ 100, |ai| ≤ 109, |bj| ≤ 109, будут оцениваться в

Пример
Ввод

Вывод

Пояснение

3
2
-5
-2
4
1
4

2

3 поезда движутся в положительном направлении, 2 поезда движутся в отрицательном направлении. Начальные координаты поездов, движущихся в положительном направлении равны −5, −2, 4, движущихся в отрицательном направлении равны 1 и 4. Запишем, что при t = 0 координаты поездов (−5, −2, 4, 1, 4). Суммарное расстояние всех поездов до станции равно 16. В момент t = 1 координаты поездов будут (−4, −1, 5, 0, 3), суммарное расстояние до станции равно 13. В момент t = 2 координаты поездов будут (−3, 0, 6, −1, 2), суммарное расстояние до станции равно 12. В момент t = 3 координаты будут (−2, 1, 7, −2, 1), суммарное расстояние до станции равно 13. ответ на этот тест t= 2
ПиТОН ХЕЛП

Показать ответ
Ответ:
nikitalarin843
nikitalarin843
12.01.2021 12:39

#include <iostream>

#include <vector>

#include <algorithm>

#define ll long long int

#define vi vector<int>

#define va vector<vector<int>>

#define frr(i,n) for(int i=0;i<n;i++)

#define fir(n,i) for(int i=n-1;i>=0;i--)

using namespace std;

int main(int argc, char* argv[])

{

vi s, g, h, k;

int a, b, c, d, e = 0;

cin >> a >> b;

frr(i, a) {

 cin >> c;

 if (c < 0) s.push_back(abs(c));

 e++;

}

frr(i, b) {

 cin >> c;

 if (c > 0) s.push_back(abs(c));

 e++;

}

sort(s.begin(), s.end());

cout << s[(e / 2)-1];

 

}

Объяснение:

0,0(0 оценок)
Ответ:
kolodenkoa444
kolodenkoa444
12.01.2021 12:39

def run():

   a = int(input())

   b = int(input())

   trains = []

   for i in range(a + b):

       trains.append(int(input()))

   t = 0

   s = sum(i if i >= 0 else -i for i in trains)

   while True:

       for i in range(a):

           trains[i] += 1

       for i in range(b):

           trains[a + i] -= 1

       s1 = sum(i if i >= 0 else -i for i in trains)

       if s1 < s:

           s = s1

           t += 1

       else:

           return t

print(run())

Объяснение:

Язык Python, на

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