_c_lang_config = { "compile": { "src_name": "main.c", "exe_name": "main", "max_cpu_time": 3000, "max_real_time": 5000, "max_memory": 128 * 1024 * 1024, "compile_command": "/usr/bin/gcc -DONLINE_JUDGE -O2 -w -fmax-errors=3 -std=c99 {src_path} -lm -o {exe_path}", }, "run": { "command": "{exe_path}", "seccomp_rule": "c_cpp", } } _c_lang_spj_compile = { "src_name": "spj-{spj_version}.c", "exe_name": "spj-{spj_version}", "max_cpu_time": 3000, "max_real_time": 5000, "max_memory": 1024 * 1024 * 1024, "compile_command": "/usr/bin/gcc -DONLINE_JUDGE -O2 -w -fmax-errors=3 -std=c99 {src_path} -lm -o {exe_path}" } _c_lang_spj_config = { "exe_name": "spj-{spj_version}", "command": "{exe_path} {in_file_path} {user_out_file_path}", "seccomp_rule": "c_cpp" } _cpp_lang_config = { "compile": { "src_name": "main.cpp", "exe_name": "main", "max_cpu_time": 3000, "max_real_time": 5000, "max_memory": 128 * 1024 * 1024, "compile_command": "/usr/bin/g++ -DONLINE_JUDGE -O2 -w -fmax-errors=3 -std=c++11 {src_path} -lm -o {exe_path}", }, "run": { "command": "{exe_path}", "seccomp_rule": "c_cpp" } } _java_lang_config = { "compile": { "src_name": "Main.java", "exe_name": "Main", "max_cpu_time": 3000, "max_real_time": 5000, "max_memory": -1, "compile_command": "/usr/bin/javac {src_path} -d {exe_dir} -encoding UTF8" }, "run": { "command": "/usr/bin/java -cp {exe_dir} -Xss1M -XX:MaxPermSize=16M -XX:PermSize=8M -Xms16M -Xmx{max_memory}k " "-Djava.security.manager -Djava.security.policy==/etc/java_policy -Djava.awt.headless=true Main", "seccomp_rule": None, "env": ["MALLOC_ARENA_MAX=1"] } } _py2_lang_config = { "compile": { "src_name": "solution.py", "exe_name": "solution.pyc", "max_cpu_time": 3000, "max_real_time": 5000, "max_memory": 128 * 1024 * 1024, "compile_command": "/usr/bin/python -m py_compile {src_path}", }, "run": { "command": "/usr/bin/python {exe_path}", "seccomp_rule": None, } } languages = [ {"config": _c_lang_config, "spj": {"compile": _c_lang_spj_compile, "config": _c_lang_spj_config}, "name": "C", "description": "GCC 4.8"}, {"config": _cpp_lang_config, "name": "C++", "description": "G++ 4.8"}, {"config": _java_lang_config, "name": "Java", "description": "OpenJDK 1.7"}, {"config": _py2_lang_config, "name": "Python2", "description": "Python 2.7"} ] spj_languages = list(filter(lambda item: "spj" in item, languages))