Подразделы

Другие разделы

Дата и время

11/12/2024 14:41:39

Авторизация

Имя:
Пароль:
Зарегистрироваться
Восстановить пароль
 

printРазбор задачи F. Лгуны и правдолюбы

Тема: задача на идею, логику
Сложность: ниже среднего

Пусть кто-то из героев назвал число `k`. Если этот герой является правдолюбом, то `k` героев (лгуны) должны назвать число, не совпадающее с `k`, а остальные `n-k` героев должны также сказать число `k`. Поэтому нужно подсчитать сколько раз названо каждое число `k` (для всех `k` от 0 до `n`). Если оно названо ровно `n-k` раз, то это один из вариантов количества лгунов в компании.
var sum:array[0..100] of integer;
    n,k,kv:integer;
begin
  read(n);
  { Считаем количество героев, сказавших некоторое число }
  for i:=1 to n do 
  begin
    read(k);
    inc(sum[k]);
  end;
  { Считаем количество вариантов }
  kv:=0; 
  for k:=0 to n do
    if sum[k]=n-k then
      inc(kv);
  { Выводим варианты }
  writeln(kv);
  if kv>0 then
  begin
    for k:=0 to n do
      if sum[k]=n-k then
        write(' ',k);
    writeln;
  end;
end.
loading