ICPC Qualification mirror / std.sql.check

ru en cn

с начала прошло: 158 д. 05:51
страница обновлена: 2026-04-09 17:51:12.937402+00

std.sql.check: checker.py

import sys
from json import loads

ERR_OK = 0
ERR_WA = 1
ERR_PE = 2
ERR_UH = 3

# 2nd argument is 'test.log' file, 3rd is 'n.ans' file
with open(sys.argv[3], 'r') as answer_file, open(sys.argv[2], 'r') as output_file:
    err_answer_file = int(answer_file.readline())
    err_received_file = int(output_file.readline())

    # if not OK print to console received_file and exit with err
    if err_received_file != ERR_OK:
        print(output_file.read())
        exit(err_received_file)

    right_answer_dict = loads(answer_file.read())
    received_answer_dict = loads(output_file.read())

    # if answers doesn't match
    if received_answer_dict != right_answer_dict:

        if received_answer_dict and len(received_answer_dict[0]) != len(right_answer_dict[0]):
            print('Incorrect number of columns!')
            exit(ERR_WA)

        if received_answer_dict and len(received_answer_dict) != len(right_answer_dict):
            print('Incorrect number of rows!')
            exit(ERR_WA)

        # Data checking:
        set_right_ans = set(tuple(it) for it in right_answer_dict)
        set_received_ans = set(tuple(it) for it in received_answer_dict)
        if set_received_ans == set_right_ans:
            # List is not sorted
            exit(ERR_OK)
        else:
            print('Wrong answer!')
        exit(ERR_WA)

# if all OK, exit with 0
exit(ERR_OK)
Дальневосточный федеральный университет