простоНастя2228
15.03.2020 11:58

Айбара есть сад, который состоит из K подряд идущих грядок. В саду живут n кроликов. Каждый кролик находится в одной из грядок. Иногда кролики могут переходить в соседние грядки. Также, иногда Айбару нужно узнать количество кроликов, которые находятся на каком-то отрезке,
чтобы их покормить. Айбару дано q запросов, которые надо обработать. Они бывают следующих
типов:
• Кролик номер x (1 6 x 6 n) перешел на одну грядку налево или направо. При этом гарантируется, что кролик не выйдет за пределы сада
• Посчитать количество кроликов на отрезке от грядки l до грядки r (1 6 l 6 r 6 K) включительно.
Формат входных данных
В первой строке входных данных даны два числа - n и K.
Далее во второй строке указаны n чисел - изначальное положение каждого кролика.
Затем в отдельной строке следует число q и q строк описывающих запросы. Запросы задаются в
следующем формате:
• L x - сдвинуть кролика номер x на одну грядку налево
• R x - сдвинуть кролика номер x на одну грядку направо
• G l r - Посчитать и вывести количество кроликов на отрезке от грядки l до грядки r включительно.
Формат выходных данных
В выходные данные выведите по одному числу для каждого запроса третьего типа в отдельной
строке.
можно решение с python

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
pollvasiltv
04.05.2021 06:16
1. Современный вариант (коротко, быстро и наглядно, кто знает). Так уже начали учить в некоторых школах.

// PascalABC.NET 3.2, сборка 1417 от 28.03.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var s:=ArrRandom(ReadInteger('n='),1,300).Println.
      Where(k->(k>=100) and ((k mod 100) div 10=0));
  if s.Count>0 then Writeln(s.Max) else Writeln('Нет элементов')
end.

Пример
n= 15
76 283 171 140 113 65 185 35 202 42 93 51 205 76 138
205

2. А так по-прежнему учат в большинстве школ. Стиль "80-х годов века". Долго, длинно, можно наделать ошибок, но по-другому эти учителя сами не могут.

const
  nn=100;
var
  i,n,max:integer;
  a:array[1..nn] of integer;
begin
  Write('n=');
  Read(n);
  Randomize;
  max:=0;
  for i:=1 to n do begin
    a[i]:=Random(300)+1;
    Write(a[i],' ');
    if (a[i]>=100) and ((a[i] mod 100) div 10=0) then
      if a[i]>max then max:=a[i]
    end;
  Writeln;
  if max>0 then Writeln(max)
  else Writeln('Нет элементов')
end.

Пример
n=15
219 68 131 115 104 169 80 288 143 108 124 214 50 101 1
108
0,0(0 оценок)
Ответ:
MatveyGTR
15.10.2022 15:33
1. Современное решение

// PascalABC.NET 3.2, сборка 1417 от 28.03.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var a:=ReadArrInteger(ReadlnInteger);
  Println(a.Max-a.Min,a.Where(p->p<=30).Count);
end.

2. Школьный вариант в стиле "ТурбоПаскаль 1983г."

var
  n,i,a,k,max,min:integer;
begin
  Readln(n);
  max:=0;
  min:=301;
  k:=0;
  for i:=1 to n do begin
    Read(a);
    if a>max then max:=a;
    if a<min then min:=a;
    if a<=30 then k:=k+1
    end;
  Writeln(max-min,' ',k)
end.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота