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