Такси
После затянувшегося совещания директор фирмы решил заказать такси, чтобы развезти сотрудников по домам. Он заказал N машин — ровно столько, сколь у него сотрудников. Однако когда они подъехали, оказалось, что у каждого водителя такси свой тариф за 1 километр.
Директор знает, какому сотруднику сколько километров от работы до дома (к сожалению, все сотрудники живут в разных направлениях, поэтому нельзя отправить двух сотрудников на одной машине). Теперь директор хочет определить, какой из сотрудников на каком такси должен поехать домой, чтобы суммарные затраты на такси (а их несет фирма) были минимальны.

Формат входных данных
Сначала во входном файле записано натуральное число N (1≤N≤1000) — количество сотрудников компании (совпадающее с количеством вызванных машин такси). Далее записано N чисел, задающих расстояния в километрах от работы до домов сотрудников компании (первое число — для первого сотрудника, второе — для второго и т.д.). Все расстояния — положительные целые числа, не превышающие 1000. Далее записано еще N чисел — тарифы за проезд одного километра в такси (первое число — в первой машине такси, второе — во второй и т.д.). Тарифы выражаются положительными целыми числами, не превышающими 10000.

Формат выходных данных
В выходной файл выведите N чисел. Первое число — номер такси, в которое должен сесть первый сотрудник, второе число — номер такси, в которое должен сесть второй и т.д., чтобы суммарные затраты на такси были минимальны. Если вариантов рассадки сотрудников, при которых затраты минимальны, несколько, выведите любой из них.


Заметим, что минимум затрат на такси достигается при такой рассадке сотрудников по такси, что i-й по величине длины поездки сотрудник (1-й тот, чей путь до дома максимален) сидит в i-м по стоимости такси (1-е такси – такси, тариф в котором минимален). Таким образом, для того, чтобы вывести номер такси, в котором при такой рассадке окажется i-й сотрудник, требуется отсортировать расстояния и тарифы в порядке убывания и возрастания соответственно.

Текст программы (Паскаль):
var n,i,j,x:longint;
a,b:array[1..100] of longint;
begin
assign(input,'input.txt');
reset(input);
assign(output,'output.txt');
rewrite(output);
read(n);
for i:=1 to n do
read(a[i]);
for i:=1 to n do
read(b[i]);
for i:=2 to n do
for j:=2 to n do
if a[j]>a[j-1] then begin
x:=a[j];
a[j]:=a[j-1];
a[j-1]:=x;
end;
for i:=2 to n do
for j:=2 to n do
if b[j]<b[j-1] then begin
x:=b[j];
b[j]:=b[j-1];
b[j-1]:=x;
end;
x:=0;
for i:=1 to n do
x:=x+a[i]*b[i];
write(x);
end.

This site was made on Tilda — a website builder that helps to create a website without any code
Create a website