#!/usr/bin/env python3
import csv

# Read the December 28 file - store by teamPassword
dec28_data = {}
max_scores = {}
with open('bebrasksa_2025_preliminary_results_dec28.csv', 'r', encoding='utf-8') as f:
    reader = csv.DictReader(f)
    for row in reader:
        team_password = row['teamPassword']
        contestant_code = row['contestantCode']
        score = row['score']
        dec28_data[team_password] = {'contestantCode': contestant_code, 'score': score}
        # Track max score for each contestantCode
        if contestant_code not in max_scores or score > max_scores[contestant_code]:
            max_scores[contestant_code] = score

# Read the December 29 file and compare
changed_contestants = []
new_max_scores = {}
with open('bebrasksa_2025_preliminary_results_dec29.csv', 'r', encoding='utf-8') as f:
    reader = csv.DictReader(f)
    for row in reader:
        team_password = row['teamPassword']
        contestant_code = row['contestantCode']
        score = row['score']

        # Track max score for each contestantCode in dec29
        if contestant_code not in new_max_scores or score > new_max_scores[contestant_code]:
            new_max_scores[contestant_code] = score
        
        # Check if teamPassword exists in dec28 and if score changed
        if team_password in dec28_data:
            if dec28_data[team_password]['score'] != score:
                changed_contestants.append(contestant_code)
                print(f"Contestant {contestant_code} (teamPassword: {team_password}) score changed from {dec28_data[team_password]['score']} to {score}")

# Write results to file
non_changed = 0
with open('contestants_changed.txt', 'w', encoding='utf-8') as f:
    for contestant_code in changed_contestants:
        if new_max_scores[contestant_code] == max_scores[contestant_code]:
            non_changed += 1
            print(f"Contestant {contestant_code} max score did not change ({max_scores[contestant_code]})")
            continue
        f.write(f"{contestant_code}\n")

print(f"Found {len(changed_contestants) - non_changed} contestants with changed scores")
print(f"Results written to contestants_changed.txt")
