Предмет: Информатика,
автор: LastError
Напишите на Pascal задачу.
7 класс
Просьба помочь с данной задачой.
Заранее спасибо.
Арифметическая Прогрессия
Для проведения парада по случаю нового года требуется некоторое количество военнослужащих. На параде военнослужащие занимаются исключительно построением в шеренги. Шеренга называется регулярной, если военнослужащие в ней либо все одного роста, либо рост возрастает от одного конца шеренги к другому каждый раз на одну и ту же величину, образуя тем самым арифметическую прогрессию.
Чтобы достойно выступить на параде, создайте из имеющихся в вашем расположении военнослужащих максимальную регулярную шеренгу.
Входные данные:
В первой строке входного файла задано число N - количество военнослужащих (0<=N<=5000).
Во второй сторке задан их рост в миллиметрах, где 0<=a[i]=5000.
Выходные данные:
Количество военнослужащих в максимальной регулярной шеренге.
Ответы
Автор ответа:
0
const
auto = false;
var
soldier: array[1..5000]of integer;
n, i, j, k, max, t, d, imax, a, c: integer;
begin
if auto then begin
n := random(5000);
for i := 1 to n do
soldier[i] := random(5000);
end
else begin
readln(n);
for i := 1 to n do
read(soldier[i]);
end;
{сортирововчка}
for i := 1 to n - 1 do
begin
imax := i;
for j := i + 1 to n do
if soldier[j] > soldier[imax] then
imax := j;
max := soldier[i];
soldier[i] := soldier[imax];
soldier[imax] := max;
end;
max := 0;
for i := 1 to n - 1 do
for j := i + 1 to n do
begin
a := soldier[j];
d := soldier[j] - soldier[i];
c := 2;
for k := j + 1 to n do
if soldier[k] = a + d then begin
a := soldier[k];
c := c + 1;
end;
if c > max then max := c;
end;
writeln(max);
end.
auto = false;
var
soldier: array[1..5000]of integer;
n, i, j, k, max, t, d, imax, a, c: integer;
begin
if auto then begin
n := random(5000);
for i := 1 to n do
soldier[i] := random(5000);
end
else begin
readln(n);
for i := 1 to n do
read(soldier[i]);
end;
{сортирововчка}
for i := 1 to n - 1 do
begin
imax := i;
for j := i + 1 to n do
if soldier[j] > soldier[imax] then
imax := j;
max := soldier[i];
soldier[i] := soldier[imax];
soldier[imax] := max;
end;
max := 0;
for i := 1 to n - 1 do
for j := i + 1 to n do
begin
a := soldier[j];
d := soldier[j] - soldier[i];
c := 2;
for k := j + 1 to n do
if soldier[k] = a + d then begin
a := soldier[k];
c := c + 1;
end;
if c > max then max := c;
end;
writeln(max);
end.
Автор ответа:
0
Большое спасибо за помощь.
Автор ответа:
0
если правильно, то поставь лучшее решение пожалуйста, надо для статуса) заранеее спасибо)
Автор ответа:
0
обязательно
Автор ответа:
0
спасибо)
Похожие вопросы
Предмет: Математика,
автор: vitalyazartsov
Предмет: Математика,
автор: innabatura8
Предмет: Русский язык,
автор: rustamalimirzoev24
Предмет: Алгебра,
автор: svetlanka2
Предмет: Химия,
автор: Lara71