Всё просто. Когда ты вызываешь метод readline(), то получаешь массив ['100', '500', '1000\n']. Поэтому max() возвращает '500'. Можно сделать так:
a = []
a = fin.readline().split(' ')
a = list(map(int, a)))
fg = min(a)
fgt = max(a)
print('min =' , fg, ',' , ' max =' , fgt)
fin.close()
fout.close()
Теперть на вход в функцию max() будет поступать список целых чисел и получать корректный результат.