Compiler settings

We use kotlinc 1.8.10 to compile your program with the following command:

$ kotlinc -d {path} -Djava.io.tmpdir={path} {files}

  • {files} is a space-separated list of all files.

Runtime settings

We use kotlin to run your program with the following command:

$ kotlin -J-XX:+UseSerialGC -J-Xss64m -J-Xms{memlim}m -J-Xmx{memlim}m -cp {path} {mainclass}

  • {mainclass} is the class containing your main function.
  • {memlim} is the actual memory limit for the problem you are submitting to.

File Extensions

Files with any of the following file extensions will be used: .kt


The mainclass is the class containing the entry point (main method) of your program. It is a method that looks like this:

fun main(args : Array<String>)

As you can submit multiple classes, there can potentially be multiple such methods. Therefore you need to specify which class contains the main method we should use. Note that the mainclass must contain the full name of the class. If you declare a package, it must be included (or we will not find your class). For example, if your class name is SolutionKt and it is in package fuzzy your mainclass should be fuzzy.SolutionKt.

In Kotlin it is possible to write a program with an implicit class declaration. If you do not write public class {Name}Kt at some point in your program, Kotlin will use the filename to generate a class declaration. For example, if your file is named foo.kt the generated class declaration will be public class FooKt.

Specifying the wrong mainclass will give you a Compile Error telling you what happened.