object Sails2 extends Application { val N = readInt // 高さ, 旗の数 val mast:Array[Array[int]] = List.tabulate(N, i => readLine.split(" ").toList.map(Integer.parseInt(_)).toArray).toArray var maxHeight = 0 mast.foreach(l => maxHeight = Math.max(maxHeight, l(0))) val count = new Array[int](maxHeight + 1) var flags = 0 mast.foreach(a => { count(a(0)) += 1 flags += a(1) }) for(i <- (1 to maxHeight - 1).reverse) { count(i) += count(i + 1) } var left = flags var sum = 0l for(i <- (1 to maxHeight).reverse) { val min = Math.min(count(i), left / i) left -= min sum += (min * (min - 1) / 2) } println(sum) }