Updated:

1. Snow floor

/fill 0 70 0 20 70 20 snow_block

Leave at least five blocks of space below, with water at the bottom.

2. Snow-only shovels

/gamemode adventure @a
/give @a diamond_shovel[can_break={blocks:"minecraft:snow_block"},enchantments={efficiency:5}]
/gamerule block_drops false

Adventure mode stops players from breaking anything except what the shovel allows, and turning off block drops keeps snowballs from piling up. Use doTileDrops on 1.21.10 and earlier. See can_break and can_place_on.

3. Eliminate fallers (repeating)

/execute as @a[gamemode=adventure,x=0,y=60,z=0,dx=20,dy=8,dz=20] run gamemode spectator @s

Put this in a repeating command block. The box from y=60 to y=68 sits under the floor, so anyone who drops through it becomes a spectator and can keep watching the match. Make the box cover the whole arena, or players who fall near the edge will not be caught.

4. Last player standing

/scoreboard objectives add alive dummy
/execute store result score #game alive if entity @a[gamemode=adventure]
/execute if score #game alive matches 1 run tellraw @a [{"selector":"@a[gamemode=adventure]"},{"text":" wins!","color":"gold"}]

5. Reset the floor

/fill 0 70 0 20 70 20 snow_block replace air
/gamemode adventure @a

replace air only refills the holes, so it is fast even on a large floor. Then put everyone back in adventure mode and teleport them onto the floor for the next round.

6. Two-layer arena

/fill 0 64 0 20 64 20 snow_block

Add a second snow floor six blocks lower and move the elimination box under it (for example y=55 to y=62). Players who fall through the top floor get a second chance, which makes rounds last longer.

7. Announce the winner once

# repeating block
execute store result score #game alive if entity @a[gamemode=adventure]
# chain 1
execute if score #game alive matches 1 unless entity @a[tag=won] run tellraw @a [{"selector":"@a[gamemode=adventure]"},{"text":" wins!","color":"gold"}]
# chain 2
execute if score #game alive matches 1 run tag @a[gamemode=adventure] add won

A repeating check would announce the winner every tick. The won tag stops repeats. Run /tag @a remove won before the next round.

8. Add snowballs

/give @a[gamemode=adventure] minecraft:snowball 16

Snowballs knock players back a little, so they can push rivals into holes.

Troubleshooting

Check your command

The Command Error Doctor checks common syntax mistakes in your browser.