Встречаются больше 1 раза, это значит по-крайней мере 2. Тогда, например, можно попробовать так
MaxN := - MaxInt;
for i:=1 to N-1 do
for j:=i to N do
if (A[ i ] = A[ j ]) and (A[ i ] > MaxN) then MaxN := A[ i ];
end;
N - размерность массива (в данном случае 30).
Как видите, можно вполне обойтись без дополнительного массива.
Пару слов об идее. В цикле по i берем очередной элемент и проверяем следующие за очередным. Если совпали, то встретилось больше раза и, следовательно, удовлетворяет условию и тут же проверяем не больше ли оно максимального значения. При положительном результате модифицируем максимальное значение. То, что по мере приближения к концу массива будем как бы повторно проверять вторые и т. д. вхождения элемента, значения не имеет по причине того, что они уже обработаны.
Если после всех этих плясок MaxN останется равным -MaxInt, то это будет означать, что в массиве ни одно значение не повторяется.