小塔看到有一群人排队接水,每个人需要一定时间接水,每个人都需要等待前面的人接完水之后才能接水。每个人的耗时是等待前面的人接完水的时间加上自己的接水时间。现在你可以进行一次调换,调换 i,j 的位置,以节约所有人的耗时。请你找到调换的位置 i,j ,令所有人的耗时之和最小。
我们只能够进行一次操作,所以我们可以枚举去交换哪两个位置,在选定了位置之后,观察这两个位置交换之后对总体时间的影响,并计算,设交换位置为i与j,两个位置的时间分别为a与b,可以计算出位置的交换对中间的位置共减少了(j-i-1)*(a-b)的时间,对于交换的两个位置共减少了(a-b)的时间,可以自行证明,这样就可以快速的求出交换任意两个位置后对总体时间的影响
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;