Description
有(n)头奶牛,奶牛们的叫声很大,第(i)头和第(j)头奶牛交流,会发出(max{Vi, Vj}×|Xi − Xj |)的音量。假设每对奶牛之间同时都在说话,请计算所有奶牛产生的音量之和是多少。
Solution
看到有(max),就想到先把奶牛按(v_i)排序。
不难发现,对于每个新加入的奶牛,它所产生的贡献为(sum{x_j}(x_j>x_i)-sum{x_j(x_j<x_i)}+v_i*(k1-k2))((k1,k2)表示(x_i)之前有几个(x_j),和(x_i)之后有几个(x_j))
所以维护两个树状数组即可。记得开(long long)