Nella if devi riportare il puntatore del file all'inizio dopo la lettura
if (size < best_score) {
std::cout << "NEW BEST SCORE: " << size << std::endl;
file.seekg(0, std::ios::beg);
file << size << std::endl;
}
e la else non serve, eliminala.
Così aggiorni solo se il punteggio è minore del precedente. E' corretto?