C2 — дописать программу

Задание С2 ЕГЭ по информатике неизменно содержит задачу, содержание которой сводится к следующему:
Дан целочисленный массив из N элементов. Элементы массива могут принимать произвольные значения. <Далее следует постановка задачи>. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.

Приведем пример решения задачи на примере типового задания (Якушкин П. А., Ушаков Д. М. Самое полное издание типовых вариантов реальных заданий ЕГЭ: 2010, стр. 135): Составить программу которая находит и выводит сумму элементов наибольшей возрастающей последовательности подряд идущих элементов массива.
В оригинале на Паскаль:

const
	n=40;
var
	a:array[1..n] of integer;
	i,l,lmax,s,smax:integer;
begin
	for i:=1 to n do
	readln(a[i]);
	...
end.

В нашей версии, для наглядности, клавиатурный ввод заменён на типизированную константу. На вывод отправлена и максимальная длина последовательности.

program c2c135;
uses
	crt;
const
	n = 40;
	a:array[1..n] of integer = (1,2,3,4,1,1,1,1,1,0,
								 1,2,3,4,5,5,3,3,2,1,
								 1,2,3,4,5,6,7,8,0,0,
								 1,2,3,4,5,6,7,8,9,3);
var
	i,l,lmax,s,smax:integer;
begin
	clrscr;
	// реализация
	i:=0; lmax:=0;
	while i<=n do
	begin
		s:=0; l:=0;
		inc(i);
		// определяем длину последовательности
		while a[i] < a[i+1] do
		begin
			s:=s+a[i];
			inc(l);
			inc(i);
		end;
		// завершаем последовательность конечным
		if l <> 0 then
		begin
			s:=s+a[i];
			inc(l);
			inc(i);
		end;
		// поиск максимальной длины
		if l>lmax then
		begin
			lmax:=l;
			smax:=s;
		end;
	end;
	// результаты
	writeln(lmax:5, smax:5)
end.

Добавить комментарий