All dynamic libraries it's linked with, program's code itself and all data and stack memory it allocates, AFAIK.
They are kilobytes, glibc is quite heavy. But then again, it's sure to be cached in RAM.
Well, if your distribution doesn't come with it, google for it..
Fields are: command, user time, system time, effective time, uid, gid, memory, io, time.
It's allocated memory, not accessed. I don't know how to measure accessed memory.
As of RLIMITs, when RLIMIT_AS is exceeded, program receives SIGSEGV. How do you differentiate that program has exceeded the memory limit or it just access illegal part of memory (the unallocated part, for example). I'm a bit confused here. :?
We don't
Right now, it's "RE (other)" in spoj.
We might start to detect it sometime, but I personally don't like to mess with ptrace() and we would detach after loading libraries and allocating memory anyway.
Another thing.
In chroot jail (in which programs are being run) do you have all the libraries and interpreters (for dynammicaly linked programs and the ones that use interpreters)? In this case, couldn't any program just do unlink(2) and mess everything up?! Do you copy input files to this jail or just use a FIFO or some similar trick. 
I don't get your point, on my systems, chroot() doesn't give any additional privileges and unlink()ing is at least as hard without proper privileges as without it.
And yes, we have separate chroot or two (chroots for compilers) for all languages.
Input and output files are passed though pipes.