e-mail e-mail how to use these pages? how to use these pages?

ACM Programming Contest

Contest Environment

Each team will use exactly one Linux based workstation with six text terminals. Unfortunately, there are not enough computationally equivalent X terminals for all the teams. We prefer the fast system responses to any kind of graphic design.

We cannot guarantee any of information provided bellow. It is always subject to change without a notice. The actual used environment will be announced several days before the Contest. All contestants will have a chance to test the enviroment (including our Evaluation System) one day before the Contest during the Practice Session.

The components we are going to use:
Component Version
Operating System Linux 2.0.33 or higher
C Compiler GNU C Compiler (gcc) 2.7.2 or higher
Pascal Compiler GNU Pascal Compiler (gpc) 2.7.2 or higher
C++ Compiler GNU C++ Compiler (g++) 2.7.2 or higher
Editors joe, jstar, vi, emacs, mc, or some other Linux editors


The contestants may use most of the commands usual in Unix systems. We are planning to publish a short description of basic commands but it is not yet prepared.

In addition to these "traditional" commands there are some Contest specific utilities for communication with judges. These utilities are:

compile filename.extension
Tries to compile the source code and creates a binary file if the source is ok. filename is the name of the problem and extension identifies the used language.
submit filename.extension
Sends the source code to judges. After some time, some response should appear back to the team. See the Contest Rules for the description of responses. Parameter is the same as in the previous case.
print filename
Allows to print a text file with the given name (source code, program output). The printed papers are then brought by organizers.
This command may be used in case of any problems with the workstation or with understanding a problem statement. It is used for sending clarification requests and for reading replies (clarifications). The exact semantics will be specified later.

Permitted Function Calls

Contestants are allowed to use only a restricted subset of functions provided by each programming language. In general, it is possible to use all the functions which are used for reading standard input (scanf, sscanf, getchar, gets), creating standard output (printf, putchar), working with memory (malloc, free), and computation (sqrt, qsort). Restricted functions are those that could be "dangerous" or "nasty" under some circumstances. That means contestants are not able to open any files (open, fopen), nor do any other system calls (signal, fork).

In C and C++ languages, the allowed functions are declared in the following header files (note that not all of the functions declared by these headers are allowed):

  • stdio.h
  • stdlib.h
  • ctype.h
  • string.h
  • math.h
  • limits.h
  • complex.h
  • iostream.h

In Pascal, no extensions to the standard library are permitted.

The following table lists the most frequent C and Pascal functions, stating which are permitted and which are not. The list may not be complete.
Language Allowed Functions Restricted Functions
abs atoi bsearch bzero calloc ceil drem exit exp fflush fgetc fgets floor fmod free getc getchar gets hypot isalnum isalpha isdigit ispunct isspace log malloc memcmp memcpy memmove memset pow printf puts qsort realloc scanf setbuf sprintf sqrt sscanf strcasecmp strcat strchr strcmp strcpy strlen strncasecmp strncmp strncpy strrchr strstr strtok strtol tolower toupper ungetc accept bind fopen fork gethostbyaddr herror listen perror raise signal sleep socket sockgetstr sockread sockwrite time times vfork waitpid
Pascal dispose eof eoln get new read write, and mathematical functions assign reset rewrite