Can't place 426K process since there's not a big enough hole. It must wait until a bigger hole is free. Clearly the best-fit algorithm makes the most efficient use of memory, since it's the only one which can place all of the processes. Allowing two entries in the page table to point to the same page frame makes it so that users can share both code and data. If the code is reentrant, then you can have shared use of larger programs, which saves on memory.
Copying is effected by having different page tables point to the same location.
If the users are sharing non-reentrant code, then if one user modified the code, it would modify the other user's copy of the code, as well. It is easier to share reentrant code using segmentation than paging, since segments can be of any size and can be shared with one entry in two different segment tables. With paging, the page size is fixed, and you need to have a common entry in the page tables for the shared pages. The system should do all references through a register which maps to the current segment number. If we allow the registers to change, then the same code can execute for different processes without them having the same segment numbers.