• Спонсоры олимпиады предоставили оргкомитету N призов для победителей олимпиады. Стоимости всех призов различны и выражаются натуральными числами от 1 до N

    Перед оргкомитетом возникла задача распределить эти призы между K участниками так, чтобы все участники получили одинаковое количество призов, и, кроме того, суммарные стоимости призов, полученных разными участниками, совпадали.

    Гарантируется, что N делится на K

    Входные данные
    На вход программы поступают два числа: N и K (1≤
    Выходные данные
    Выведите K строк по N/K чисел в каждой. В каждое строке должны быть выведены стоимости призов, которые вручаются соответствующему участнику.

    Если распределить призы требуемым образом невозможно, выведите одно число 0.

    Примеры
    входные данные
    8 2
    выходные данные
    1 4 6 7
    2 3 8 5
    входные данные
    6 3
    выходные данные
    1 6
    3 4
    5 2

Ответы 1

  • //PascalABC.NET//Версия 3.3, сборка 1634 (14.02.2018)begin   var (n, k) := ReadInteger2('n,k->');   var p := ArrGen(n, t -> t + 1);    var m := new integer[k, n div k];   var sum := p.Sum div k;   for var i := 0 to k - 1 do   begin      var m_sum := sum;      m[i, 0] := p[0]; m_sum := m_sum - m[i, 0];      p := p[1:];      for var j := 1 to (n div k) - 1 do      begin         if m_sum - p.Last > 0 then begin m[i, j] := p.max;  m_sum := m_sum - p.Max; p := p[:p.IndexMax]; end         else          begin            if p.Where(t -> t = m_sum).Count = 1 then m[i, j] := m_sum;            p := p.Where(t -> t <> m_sum).ToArray;         end;                                                       end;   end;    var t := true;   for var i := 0 to m.RowCount - 2 do     if (m.Row(i).sum <> m.Row(i + 1).Sum) or (p.Length <> 0) then begin t := false; break; end;   if t then m.Println else 0.Println;end.Пример(1): n,k-> 8 2   1   8   7   2   3   6   5   4Пример(2): n,k-> 6 3   1   6   2   5   3   4
    • Автор:

      carensgze
    • 1 год назад
    • 9
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years