===== PascalABC.NET =====
procedure MyCompare<T>(P, Q: HashSet<T>);
begin
if P.SetEquals(Q) then
Print('Множества эквивалентны')
else if P.IsSubsetOf(Q) then
Print('Первое множенство является подмножеством второго')
else if P.IsSupersetOf(Q) then
Print('Второе множенство является подмножеством первого')
else
Print('Проверка множеств завершена')
end;
begin
var n := ReadInteger('Мощность первого множества:');
var P := ReadSeqInteger('Введите элементы множества:', n).ToHashSet;
n := ReadInteger('Мощность второго множества:');
var Q := ReadSeqInteger('Введите элементы множества:', n).ToHashSet;
MyCompare(P, Q)
end.
В таком турнире будет всего сыграно n (n - 1) / 2 партий: каждая из n команд сыграет по (n - 1) партии, и в каждой партии будет по две команды.
Если n - нечетное, то на первый взгляд ничего не мешает тому, что каждая команда выиграет по (n - 1)/2 встреч и будет победителем. Так действительно может быть: действительно, расставим все команды по кругу и скажем, что каждая команда выиграла у (n - 1)/2 команд, стоящих правее её, и проиграла (n - 1)/2 командам, стоящим левее.
Если n - четное, то все n победителями стать не могут, поскольку тогда у каждой было бы (n - 1)/2 побед - нецелое число. Зато могут быть (n - 1) победителей: выбираем одного неудачника, который проиграет всем, а остальные (n - 1) команды между собой сыграют так, как описано выше.
Программа (Python 3):
n = int(input())
print(n - (n + 1) % 2)