Tworzenie olbrzymiej tablicy do zliczania wystąpień nie za bardzo ma sens w tym przypadku. Wystarczy pojedyncza zmienna.
Żeby informacja tak/nie występowała tylko raz trzeba przenieść ją poza pętlę.
Program mógłby wyglądać tak (chociaż to wciąż nie jest najbardziej optymalna wersja):
program trzyelementy;
var
tab: array[0..1000] of LongInt;
i, j, ileliczb: integer;
licznik :integer;
trzyrazy :boolean;
begin
readln(ileliczb);
for i:=1 to ileliczb do
begin
read(tab[i]);
end;
trzyrazy := false;
for i:=1 to ileliczb do
begin
licznik := 0;
for j:=1 to ileliczb do
begin
if(tab[i]=tab[j]) then
licznik := licznik + 1;
end;
if licznik >= 3 then
trzyrazy := true;
end;
if trzyrazy then
writeln('TAK')
else
writeln('NIE');
readln();
end.
Należałoby też dodać komunikaty dla użytkownika przy wprowadzaniu liczb.