В ситуации эпидемии важна социальная дистанция. В музей одновременно прибыли несколько групп. Постройте график посещения залов музея для каждой группы так, чтобы ни одного не было пропущено, и при этом на одной точке одновременно не находилось больше одной группы. Считайте, что группы начинают осмотр одновременно, находясь в зале 1 минуту, время перемещения в минутах задано значениями длин рёбер. Допускается повторное посещение зала.
Карта музея одинаковая для всех тестов и представлена в виде графа, заданного числом вершин (от 1 до N) и набором рёбер (указывается также длина ребра — время пути между залами музея в минутах).
В тексте ниже первая строка — число вершин и рёбер; далее следуют номера соединяемых вершин и длина каждого ребра.
15 21
1 2 10
1 15 14
1 6 16
2 3 6
3 6 9
3 4 6
4 5 7
4 7 10
5 6 11
5 7 13
7 8 3
7 10 10
8 9 12
9 10 5
10 11 7
11 12 7
11 13 11
11 14 21
12 15 16
13 14 20
13 15 14
На вход программа получит набор чисел — номера залов — точка начала осмотра для каждой группы (целые числа от 1 до 15, разделённые пробелом). В ответ нужно вывести последовательность залов для каждой группы в отдельной строке (сохраняя порядок групп). Программа визита ограничена 200 минутами.
begin
var n:=ReadInteger('Количество элементов в массиве: ');
var a:=ArrRandom(n,-50,50);
a.Println(',');
Writeln('Четные элементы: ');
var i:=1;
while i<n do begin Write(a[i],' '); Inc(i,2) end;
Writeln;
Writeln('Нечетные элементы: ');
i:=0;
while i<n-1 do begin Write(a[i],' '); Inc(i,2) end;
Writeln
end.
Тестовое решение:
Количество элементов в массиве: 10
15,-18,-29,-25,46,21,-8,-17,-9,15
Четные элементы:
-18 -25 21 -17 15
Нечетные элементы:
15 -29 46 -8 -9
var x: array[1..nx, 1..nx] of integer;z:array[1..nx*2] of integer;
i, j, k,n,r,t: integer;
begin
Writeln('Введите размер матрицы n');Read(n);
for i := 1 to n do begin
for j := 1 to n do begin
Read(k);x[i, j] := k; end;end;
Writeln('Исходный массив');
for i := 1 to n do begin
for j := 1 to n do begin
Write(x[i, j]:4);
if x[i, j]>0 then begin t:=t+1; z[t]:=x[i, j];end;
end;
Writeln; end;
Writeln;Writeln('Одномерный массив');
for j := 1 to t do
Write(z[j]:4);
end.