Для нападения на некоторые поселения людей, эльфов и карликов вождь Орды Оргрим Думхаммер сформировал из всех имеющих в наличии воинов N различных отрядов, которые были отправлены на завоевания. Однако прибывшие лишь только сейчас разведчики донесли о силах противников, скопленных в этих поселениях, что естественно скорректировало планы Оргрима. И теперь он хочет произвести перераспределение войск по отрядам, переводя воинов из одного отряда в другой. При этом, чтобы не создавать неразбериху в рядах своей армии и выполнить перераспределение как можно быстрее, количество таких переводов должно быть минимально возможным (за один раз переводится один солдат из некоторого отряда в другой).
Напишите программу, которая определяет минимальное количество переводов для перераспределения войск.
Входные данные
Первая строка входного файла содержит целое число N (1 ≤ N ≤ 10000) – количество отрядов. Вторая строка содержит изначальное распределение воинов по отрядам – N чисел, каждое из которых определяет количество воинов в соответствующем отряде. А в третьей строке – требуемое распределение солдат. Количество солдат в одном отряде не превышает 106. Гарантируется, что общее число воинов в изначальном распределении и требуемом совпадает.
Выходные данные
В выходной файл выведите минимально возможное количество переводов.
#include <iostream>
#include <vector>
using namespace std;
vector <long long int > a;
long long int n, tmp, delta = 0;
int main()
{
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> tmp; a.push_back(tmp);
}
for (int i = 0; i < n; i++)
{
cin >> tmp; delta += abs(tmp - a[i]);
}
cout << delta / 2 << endl;
}
Есть решение которого нет на сайте? Пиши admin@devexe.top