Finding the power allocations that maximize the sum-rate of a K-user N-tone digital subscriber line (DSL) system is known to be NP-hard. In this paper we devise a polynomial-time algorithm to approximate the maximum sum rate of the system. The development of this algorithm is guided by the fact that, to approach the sumrate maximum, the users should operate in an FDMA-mode over frequency tones where the crosstalk coefficients exceed a certain threshold, and should share the tones for which the crosstalk coefficients are sufficiently small. Drawing on this insight, the algorithm partitions the N tones into three sections and imposes an appropriate signalling structure on each section. The first section contains those tones for which the crosstalk coefficients are small and uses an iterative water-filling technique to determine the power allocations. The second section contains the tones with intermediate crosstalk coefficients and uses a primal-dual algorithm, and the third section contains the tones with large crosstalk coefficients and uses a dual FDMA algorithm. To decouple the overall optimization of power allocation across the three sections, we use tools from Lagrangian duality and sensitivity analysis to devise an iterative scheme that can optimally allocate each user's power budget to the three sections. Our numerical simulations, show that the sum-rate of the proposed algorithm is very close to that of the dasiaoptimalpsila spectrum balancing algorithm, but requires considerably less computational effort.