lotarev20021
20.03.2021 15:12

поедание крыс
кратос и атрей решили поесть жареных крыс. чтобы разнообразить процесс, кратос приготовил 2k крыс и предложил устроить соревнование по скоростному поеданию.

и кратос и атрей будут есть по k жареных крыс. все закончилось также быстро, как и началось. фрейя тайно наблюдала за этим состязанием и заметила несколько особенностей:

оба участника состязания съели ровно по k крыс.
за одно действие кратос либо атрей съедали либо одну, либо две крысы.
каждый раз, когда кто-то из них делал действие, он записывал сколько крыс съедал.
после того, как кратос с атреем ушли, фрейя нашла их "протокол". к сожалению, для каждого действия записано, сколько крыс было съедено, но не записано, кто именно их ел.

фрейя помнит, что кратос в некоторый момент состязания выглядел безоговорочным лидером, так как съел крыс сильно больше чем атрей. она просит вас по данному протоколу, определить, какой наибольший отрыв мог быть у кратоса на протяжении состязания.

входные данные
в первой строке заданы два целых числа n и k (2 ≤ n ≤ 105, 1 ≤ k ≤ n) - число записей в протоколе и число крыс, съеденных каждым из участников.

во второй строке заданы n чисел ai (1 ≤ ai ≤ 2) - данные протокола. гарантируется, что протокол корректен: можно разделить ai на два множества так, чтобы сумма чисел в обоих множествах была равна k.

выходные данные
выведите одно целое число - наибольший отрыв кратоса на протяжении состязания.

входные данные #1
3 2
1 2 1
выходные данные #1
1

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
verazotova04
01.09.2021 20:14
// PascalABC.NET 3.0, сборка 1073
const
  nn=30;
  mm=30;
var
  a:array[1..mm,1..nn] of integer;
  m,n,i,j,imax,imin,jmax,jmin:integer;
begin
  Writeln('Введите число строк и столбцов массива: '); Read(m,n);
  Randomize;
  Writeln('*** Исходный массив ***');
  imin:=1; jmin:=1; imax:=1; jmax:=1;
  for i:=1 to m do begin
    for j:=1 to n do begin
      a[i,j]:=Random(51)-25;
      Write(a[i,j]:4);
      if a[i,j] mod 2 = 0 then begin
        if a[i,j]<a[imin,jmin] then
          begin imin:=i; jmin:=j end
        else
          if a[i,j]>a[imax,jmax] then
            begin imax:=i; jmax:=j end
      end
    end;
    Writeln
  end;
  Writeln('*** Результирующий массив ***');
  for i:=1 to m do begin
    for j:=1 to n do begin
      if (i=imin) and (j=jmin) or (i=imax) and (j=jmax) then a[i,j]:=2*a[i,j]
      else a[i,j]:=3*a[i,j];
      Write(a[i,j]:4)
    end;
    Writeln
  end
end.

Тестовое решение:
Введите число строк и столбцов массива:
10 8
*** Исходный массив ***
 -18   9  23 -18  -3  12   4 -22
  16 -24   7  -1  11   5  21 -25
  20 -11  14 -13  13 -21  13  -2
 -20   2  10 -19  -4   5  -7 -21
  16  17 -11   1   2 -18  21   0
  -2 -10  -6   3  25  16   5  -9
 -12   9   7 -21  22  -1 -25 -23
  22   0 -24  21 -23  -3   7 -15
   8   3   8  20 -10  -5  -2  13
  -6 -12  15  -3  11 -16  -1 -10
*** Результирующий массив ***
 -54  27  69 -54  -9  36  12 -66
  48 -48  21  -3  33  15  63 -75
  60 -33  42 -39  39 -63  39  -6
 -60   6  30 -57 -12  15 -21 -63
  48  51 -33   3   6 -54  63   0
  -6 -30 -18   9  75  48  15 -27
 -36  27  21 -63  44  -3 -75 -69
  66   0 -72  63 -69  -9  21 -45
  24   9  24  60 -30 -15  -6  39
 -18 -36  45  -9  33 -48  -3 -30
0,0(0 оценок)
Ответ:
Kateriна
15.03.2023 09:40
Static void Main(string[] args) 
       {
            int[,] arr = new int[3, 3];
            Random c = new Random(DateTime.Now.Millisecond);
            for (int i = 0; i < 3; i++)                           
                     for (int j = 0; j < 3; j++)
                          arr[i, j] = c.Next(1, 9);          //заполнение матрицы
                                                                   //тебе это не надо, т.к. она дана           
            //заданный интервал
            int a = 3;
            int b = 3;
            int sum = 0;
            int proizvedenie = 1;
            for (int i = 0; i < a; i++)
            {
                for (int j = 0; j < b; j++)
                {
                    sum += arr[i, j];
                    proizvedenie *= arr[i, j];
                }
            }
            Console.WriteLine("Матрица:");
            Console.WriteLine("{0} {1} {2}", arr[0, 0], arr[0, 1], arr[0, 2]);                   Console.WriteLine("{0} {1} {2}", arr[1, 0], arr[1, 1], arr[1, 2]);            Console.WriteLine("{0} {1} {2}", arr[2, 0], arr[2, 1], arr[2, 2]);            Console.WriteLine("Сумма = {0}", sum);            Console.WriteLine("Произведение = {0}", proizvedenie);            Console.ReadLine();     
   }
}
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота