An important result in discrepancy due to Banaszczyk states that for any set of n vectors in Rm of ℓ2 norm at most 1 and any convex body K in Rm of Gaussian measure at least half, there exists a ±1 combination of these vectors which lies in 5K. This result implies the best known bounds for several problems in discrepancy. Banaszczyk's proof of this result is non-constructive and a major open problem has been to give an efficient algorithm to find such a ±1 combination of the vectors. In this paper, we resolve this question and give an efficient randomized algorithm to find a ±1 combination of the vectors which lies in cK for c>0 an absolute constant. This leads to new efficient algorithms for several problems in discrepancy theory.