Well, Minecraft does save changes on the fly, not when player leaves the map. So you need to have some backup and when the world is unloaded, replace old map with your backuped one.
For Spigot/bukkit servers there are some plugin tools (used especially for "automatic mines" or minigames, AFAIK MineResetLite can be example, or WorldEdit with Schematic files, or Map Reset), but for vanilla server/singleplayer you need to use commandblocks and area replacing - for that you have to have two copies of area and replace one by another via commandblock, but that really depends on area size (and expects closed area of course), for bigger ones it can heavily overload or crash the server...
And I really don't know how you deal with multiple players starting at same time? Do they share the area?
If I would want to achieve your needs, I would aim for something like "daily resets", because that would be easier than reset after every player leaves the map (and more server friendly).
That can be achieved by script replacing map files from backuped folder on server restart (that you still do daily, don't you?), however you need to be sure players leave the area or they might get stuck.
With spigot/bukkit you can try to find some plugin for it, there are probably some around.