Разбор задачи 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.