Maximizing multicell capacity using distributed power allocation and scheduling