В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
алмаз122
алмаз122
05.04.2020 04:01 •  Информатика

Напишите на pascal . 7 класс с данной . заранее . арифметическая прогрессия для проведения парада по случаю нового года требуется некоторое количество военнослужащих. на параде военнослужащие занимаются исключительно построением в шеренги. шеренга называется регулярной, если военнослужащие в ней либо все одного роста, либо рост возрастает от одного конца шеренги к другому каждый раз на одну и ту же величину, образуя тем самым арифметическую прогрессию. чтобы достойно выступить на параде, создайте из имеющихся в вашем расположении военнослужащих максимальную регулярную шеренгу. входные данные: в первой строке входного файла задано число n - количество военнослужащих (0< =n< =5000). во второй сторке задан их рост в миллиметрах, где 0< =a[i]=5000. выходные данные: количество военнослужащих в максимальной регулярной шеренге.

Показать ответ
Ответ:
kolopok
kolopok
05.07.2020 13:38
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.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота