для передачи сообщения по открытому каналу связи шифровальщики придумали сложный шифр. шифр состоит из n различных чисел, записанных в одну строку через пробелы. дешифрованное сообщение состоит из k чисел, которые являются номерами исходных чисел, разбивающих исходное сообщение на k частей (подпоследовательностей), так что сумма минимумов каждой подпоследовательности будет максимальна.
итак, от вас требуется написать программу, которая выполняет дешифровку заданного шифра.
формат ввода
первая строка входного файла содержит два разделенных пробелом натуральных числа n и к (1 ≤ k < n ≤ 300).
вторая строка входного файла содержит зашифрованное сообщение –n разделенных пробелом целых различных натуральных чисел а1, а2, а3… аn (1 ≤ ai ≤ 10).
формат вывода
выходной файл в первой строке содержит максимальную сумму к слагаемых, которые являются минимумами каждой части разбиения последовательности на k частей.
во второй строке выходного файла содержится дешифрованное сообщение из разделенных пробелом к натуральных чисел – номеров чисел в последовательности, которые завершают каждую из подпоследовательностей зашифрованного сообщения.
1. Он американский ученый, основоположник кибернетики. А
также теории об искусственном интеллекте. Славу ему принесли его работы в
математике и физике. Его большая роль в том, что именно он впервые смог понять
огромное значение того, что информация будет использоваться в процессах
управления.
2.
Основатель теории информации, которая нашла свое место в современных
системах связи. В 40-х годах века ввел понятие «бит».
3.
Термин, который означает «выполняющееся
действие по запросу», ввел Тед Нельсон в веке, в 1963 году.
4.
В 1989 году. Изобретателем считают
двух человек – Тима Бернерс-Ли и Роберт Кайо.
5.
Эйлер, в честь которого назвали графическую
схему, был ученым. Его сферой изучения была математика, физика, астрономия,
химия, ботаника, музыка, медицина и другие направления. Он автор 600 трудов.
не за что! и на сердечко
for i:=0 to 10 do A[i]:= i;
Этот участок отвечает за присваивание элементам числа от 0 до 10, элементы после выполнения: 0 1 2 3 4 5 6 7 8 9 10
for i:=1 to 11 do A[i-1]:= A[11-i];
Этот участок, можно сказать, отражает вторую половину, в результате получается вот такое: 10 9 8 7 6 5 6 7 8 9 10
Участок кода для проверки на PascalABC.NET:
begin
var a:=ArrGen(11,t->t);
for var i:=0 to 10 do A[i]:= i; a.Println;
for var i:=1 to 11 do A[i-1]:= A[11-i]; a.Println;
end.