Екатерина Игнатьева
Екатерина Игнатьева

паскаль программирование

Для открытия замка сейфа в компьютерной игре из серии "Побег из комнаты" нужно найти шифр. Имеется подсказка – линейка с нанесенными на ней числами, по которой движется ползунок с прорезями, через которые видны числа на линейке. Края ползунка не могут выйти за границы линейки из-за ограничителей на концах линейки. Рядом с прорезями на ползунке нарисованы знаки + и есть текст "max". Нетрудно догадаться, что шифром для сейфа является набор чисел на линейке, видимых через прорези ползунка, сумма которых максимальна.

Напишите программу, которая определит шифр для открытия сейфа.
Первая строка ввода содержит одно целое число N (2 ≤ N ≤ 10) – размеры ползунка. Вторая строка содержит N целых чисел от 0 до 1, разделенных пробелами – описание формы ползунка слева направо. Число 0 означает, что эта часть ползунка не имеет прорезей, а число 1 соответствует части ползунка с прорезью. В описании ползунка есть по крайней мере одно число 1. Третья строка ввода содержит одно целое число M (N < M ≤ 1000) – количество чисел на линейке. Четвертая строка ввода содержит M целых чисел от 0 до 99, разделенных пробелами – числа на линейке, перечисленные в порядке их размещения на линейке.
Вывести в первой строке K целых чисел, разделяя их пробелами – шифр для открытия сейфа, где K – количество прорезей на ползунке. Числа вывести в том порядке, в котором они видны в прорезях ползунка. Если существует несколько вариантов с максимальной суммой, то вывести вариант, при котором ползунок расположен левее. Допускается вывод лишних ведущих и завершающих пробелов в строке.

Пример ввода

5
1 0 0 1 0
10
7 11 4 3 5 15 2 1 0 25

Пример вывода

4 15

Пояснение к примеру: Числа, которые появляются в прорезях при движении ползунка от самой левой возможной позиции до самой правой: 7+3, 11+5, 4+15, 3+2, 5+1, 15+0. Число 25 не может появиться в прорези ползунка из ограничителей на концах линейки. Максимум суммы чисел в прорезях достигается на числах 4 и 15.

Вот начало:
Var N,S,K,M,i,j,max:integer;A:array[0..1]of integer;B:array[0..99]of integer;
Begin
Read(N);
For i:=1 to N do
Read(A);
Readln(M);
For i:=1 to M do
Read(B[j]);
max:=0;

Ир
Ирина

Program ABC;
var
     i, j, num:integer;
     scaleLen, tableLen:integer;
     scale, table: array of integer;
     line, dline, max, totalmax, totalline:integer;
begin
     write('Введите длину линейки: ');
     readln(scaleLen);
     setlength(scale, scaleLen+1);
     write('Введите значения для линейки: ');
     for i:=1 to scaleLen do begin
         read(num);
         scale[i] := num;
     end;
     readln;

     write('Введите длину символов шифра : ');
     readln(tableLen);
     setlength(table, tableLen+1);
     write('Введите значения шифра : ');
     for i:=1 to tableLen do begin
         read(num);
         table[i] := num;
     end;
     readln;

     line:=scaleLen;
     totalmax:=0;
     totalline:=0;
     while (line <= tableLen) do begin
         dline := line-scaleLen;
         max:=0;
         for i:=1 to scaleLen do begin
             if (scale[i]=1) then
                 max := max + table[i+dline];
         end;
         if (max>totalmax) then begin
             totalmax:=max;
             totalline:=dline;
         end;
         line := line+1;
     end;

     for i:=1 to scaleLen do begin
         if(scale[i]=1) then
             writeln(table[i+totalline]);
     end;
     readln;
end.



Похожие вопросы
программирование ПАСКАЛЬ
Программирование. ПАСКАЛЬ
Программирование. Паскаль
Программирование (Паскаль)
программирование на Паскаль 7.1
Паскаль (программирование)
Программирование. Паскаль. Рекурсия.
Программирование. Паскаль.
Программирование в паскале
Помогите с программированием (паскаль)