This page contains basic information regarding this TUMjudge. If you never worked with the TUMjudge before we recommend you to read this manual first.
Rechnerhalle, the login works via the LDAP protocol. Reminder: The
Rechnerhalleusername is the part before the @ in your @in.tum.de email address.This also means that we are not responsible for your password. If you lose it, please contact the RBG, not us. If you have several @in.tum.de addresses any of them will work. However, make sure that you use the same address for registration and login.
Most problems that you will find here follow an overall structure. They contain:
Solutions can be submitted from your dashboard which is available under home
once you are logged in. In the left column click Select file... to select the file(s) for submission. TUMjudge will try to determine the problem and language from the base and extension of the filename respectively. If the automatic recognition fails select the appropriate values using the dropdown menues below the file selection. Filenames must start with an alphanumerical character and may contain only alphanumerical characters, - and _.
After you hit the submit button and confirm the submission, you will be redirected back to your submission list page. On this page, a message will be displayed indicating that your submission was successful and is now present in the list on the left hand side. An error message will be displayed if something went wrong.
Please note that you have to submit the source code of your program, not a compiled program or the output of your program. Your submission will be judged fully automated. Keep in mind that the sample data you receive in the problem statement is merely a fraction of the complete set of sample cases which is kept secret. This means that you have to think about special/corner cases that could be contained in the secret inputs, for example a graph without any edges or containing multiedges.
The top of the page shows your current position in the scoreboard as well as which problems you attempted and solved.
The left column of your dashboard shows an overview of your submissions. It contains the submission time, programming language, problem and status of the submission. To view the output your submission on the sample input from the problem set click on your submission.
To view the public scoreboard use the link scoreboard
in the top menu. It displays the scores of all participants that agreed to have their results publicly available. The scoreboard contains one column for each problem. The colors of the cells indicate the following:
Each cell contains the number of submissions for this problem and if the problem was solved, the time of the first correct submission in minutes since the problem set was handed out. The scoreboard is ordered by the number of problems solved, ties are broken using a score that is computed as follows: For each solved problem, you receive a penalty score. This score is equal to the time of the first correct submission in minutes since the problem set was handed out plus 600 for each failed attempt. The total penalty score is the sum of penalty scores for all solved problems. Both the total number of correct submissions and the current total penalty score can be found in the colume Score
.
The score board is visible to everyone, if you want your account NOT to be visible on the scoreboard, please pick invisible
during the registration.
All questions regarding the problem sets have to be sent through the clarification system, not via email. The clarification overview can be found in the right column on your dashboard which is available under home
in the top menu. Both clarification replies from the jury and requests sent by you are displayed there.
In order to submit new clarifications click the button request clarification
at the bottom of the dashboard. This request is only readable for the jury which will respond as soon as possible. Answers that are relevant for everyone will be sent to everyone.
You will be allowed to submit solutions in C++, Java, Julia, Python 2, Python 3 (CPython3), Python3 (PyPy3) or Rust. Solutions have to read all input from standard in
and write all output to standard out
(also known as console). You will never have to open (other) files.
Your program will be compiled on a computer running Linux. All submitted source files will be passed to the compiler which generates a single program to run out of them; for languages where this is relevant, the first specified file will be considered the main
source file.
Using a different compiler or operating system than the judging system should not be a problem. Be careful however, not to use any special compiler and/or system specific things (you are able to check compiler errors on your dashboard). The compile settings can be found below:
g++ -Wall -std=c++11 -O2 -static -pipe -DONLINE_JUDGE -DDOMJUDGE -o "$DEST" "$@":
javac -encoding UTF-8 -d . "$@" 2> "$TMPFILE"; java -client -Xss8m -Xmx8038608k -DONLINE_JUDGE=1 -DDOMJUDGE=1 '$MAINCLASS':
:
pypy "$MAINSOURCE":
:
:
:
We use the following versions:
Target: x86_64-linux-gnu; gcc version 4.9.2 (Debian 4.9.2-10)
java version "10.0.2" 2018-07-17; Java(TM) SE Runtime Environment 18.3 (build 10.0.2+13); Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.2+13, mixed mode)
Python 2.7.8 (2.4.0+dfsg-3, Dec 20 2014, 13:30:46); [PyPy 2.4.0 with GCC 4.9.2]
Sample Code:
#include <iostream> #include <stdio.h> int main() { // read several types of input int i, j; std::string s1; char s2[101]; // use the possibility you like more std::cin >> i >> s1; scanf("%d %100s", &j, s2); // output: use the possibility you like more std::cout << "Case #" << i << ": " << s1 << std::endl; printf("Case #%d: %s", j, s2); return 0; }
import java.util.Scanner; public class HelloWorld { public static void main(String[] args) { // create scanner object Scanner s = new Scanner(System.in); // read several types of input int i = s.nextInt(); boolean b = s.nextBoolean(); String st = s.next(); // output: use the possibility you like more System.out.println("Case #"+i+": "+st); System.out.format("Case %d#: %s\n", i, s); } }
#read input i,j=map(int, raw_input().split()) string1=raw_input() #output print "Case %d: %s"%(i,string1)
After your program has compiled successfully it will be executed and its output compared to the expected output. Before comparing the output, the exit status of your program is checked: if your program gives the correct answer, but exits with a non-zero exit code, the result will be a run-error! There are some restrictions during execution. If your program violates these, it will also be aborted with a run-error, see section Restrictions
. The output of you problem has to match the specifications given on the problem set. Mostly, it has to match the solution exactly; in case of problem statements which do not have unique output (e.g. with floating point answers), the problem set will contain information about the expected solution.
Once you upload your code to our server, there are several possible outcomes that TUMjudge could tell you.
standard out.
In order to keep the judging system stable, prevent abuse and give everyone clear and equal environments, there are some restrictions to which all submissions are subjected:
threads) do not have to worry: a normal program runs in one process.
Furthermore, any tampering with the system will result in penalties. Please also keep the number of your submissions at an acceptable level as to not unnecessarily slow judging for all participants.
Do not fool with the system. Do not try to do anything you are obviously not intended to do, for instance opening files, using network connections, hacking our system etc. Submissions with such bevaviour will be killed by the judge and we may remove points from your score or apply other penalties. Also, do not share code. You are free to discuss algorithms and problems, but please do not share solutions or code lines.
Have fun!