Напишите ** Pascal задачу.7 классПросьба помочь с данной задачой.Заранее...

0 голосов
53 просмотров

Напишите на Pascal задачу.
7 класс
Просьба помочь с данной задачой.
Заранее спасибо.

Арифметическая Прогрессия
Для проведения парада по случаю нового года требуется некоторое количество военнослужащих. На параде военнослужащие занимаются исключительно построением в шеренги. Шеренга называется регулярной, если военнослужащие в ней либо все одного роста, либо рост возрастает от одного конца шеренги к другому каждый раз на одну и ту же величину, образуя тем самым арифметическую прогрессию.

Чтобы достойно выступить на параде, создайте из имеющихся в вашем расположении военнослужащих максимальную регулярную шеренгу.



Входные данные:

В первой строке входного файла задано число N - количество военнослужащих (0<=N<=5000).<br>
Во второй сторке задан их рост в миллиметрах, где 0<=a[i]=5000.<br>


Выходные данные:

Количество военнослужащих в максимальной регулярной шеренге.


Информатика (15 баллов) | 53 просмотров
0

ну бывает

Дан 1 ответ
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.

(53.1k баллов)
0

если правильно, то поставь лучшее решение пожалуйста, надо для статуса) заранеее спасибо)

0

обязательно

0

спасибо)