Memory requirements are always difficult at first. If you are playing with memory size during execution, you can still use 'size' as a starting point. Add a few Mb for memory buffers, some for the shell that runs your job script,etc and then try it.
Similar advice holds for timing.
This allows the job a bit of time to do tidy ups if one process runs out of time. So a large memory estimate may mean your job takes a while to get started. That is, you are not actually penalizing anyone but yourself by an overestimate. Once you get an idea, you can prune it back to the minimum necessary. Now start accounting.