def spj(path, max_cpu_time, max_memory, in_path, user_out_path):
    if file_exists(in_path) and file_exists(user_out_path):
        result = judger.run(path=path, in_file=in_path, out_file="/tmp/spj.out",
                            max_cpu_time=max_cpu_time, max_memory=max_memory,
                            args=[in_path, user_out_path], env=["PATH=" + os.environ.get("PATH", "")],
                            use_sandbox=True, use_nobody=True)
        if result["signal"] == 0 and result["exit_status"] in [AC, WA, SPJ_ERROR]:
            result["spj_result"] = result["exit_status"]
        else:
            result["spj_result"] = SPJ_ERROR
        return result
    else:
        raise ValueError("in_path or user_out_path does not exist")
dataset/ETHPy150Open QingdaoU/OnlineJudge/judge/spj_client.py/spj/original