Let total tank = 1 unit.
Step 1 — compute full-tank times / per-minute rates for each full set (as given).
Set X:
20 X-pipes fill 0.70 tank in 14 minutes.
Rate_X_total = 0.70/14=0.05 (tank per minute).
So time to fill whole tank by 20 X-pipes = 1/0.05=20 minutes.
Equivalently, rate_20X = 1/20 per minute.
Set Y:
10 Y-pipes fill 3/8 tank in 6 minutes.
Rate_Y_total = (3/8)/6=3/48=1/16 (tank per minute).
So time to fill whole tank by 10 Y-pipes = 16 minutes.
Equivalently, rate_10Y = 1/16 per minute.
Set Z (drain):
16 Z-pipes empty 1/2 tank in 20 minutes.
Rate_Z_total = (1/2)/20=1/40 (tank per minute) — this is draining rate.
So time to empty whole tank by 16 Z-pipes = 40 minutes.
Equivalently, drain_rate_16Z = 1/40 per minute.
Step 2 — adjust rates for "half of X closed" and "half of Y open".
Half of X closed ⇒ only 10 X-pipes working, so X rate halves:
rate_X_half = (1/20)/2=1/40 per minute (filling).
Half of Y open ⇒ only 5 Y-pipes working, so Y rate halves:
rate_Y_half = (1/16)/2=1/32 per minute (filling).
All Z open ⇒ drain_rate = 1/40 per minute (emptying).
Step 3 — net filling rate when all three sets operate (with above adjustments).
Net rate = rate_X_half + rate_Y_half − drain_rate
= 1/40+1/32−1/40
= 1/32 (tank per minute).
(Notice the 1/40 from X and the 1/40 from Z cancel.)
Step 4 — time to fill 50% (0.5) of tank at net rate:
Time = required_work / net_rate = 0.5/(1/32)=0.5×32=16 minutes.
Therefore the correct option is D (16 minutes).