#Python 3, 103 97 82 78 76 bytes
Python 3, 103 97 82 78 76 bytes
def P(L,n=0):k,*L=L;exec("print(*[0]*n+[1]*k+[0]*sum(L));"*k);L and P(L,n+k)
Using splat to take advantage of the space-separating nature of print
, with a bit of recursion.