问题描述
沿着一条道路有 N 个仓库,相邻两个仓库间距离为 1 公里。假设第 i个仓库存有 Xi 个单位的货物。现在希望将货物重新分配,使得最终每个仓库内的货物量 Xi 相等。
假设将 1 个单位的货物运送 1 公里的耗费为 1 个金币。请你计算出为了让各个仓库内的货物相等最少需要花费多少个金币。
输入格式
输入第一行有一个数,N (1 ≤ N ≤ 1000) ,表示仓库的个数。
第二行为用空格隔开的 N 个正整数,依次表示 X1 到 XN 。假定 Xi 不超过 1000的非负整数。所有 Xi 的和一定为 N 的倍数。
输出格式
输出文件只有一行,一个整数,表示最少花费。
求解思路
#include<iostream>
#include<cmath>
using namespace std;
int num[1005];
int n;
long long sum=0,ans=0;
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>num[i];
sum+=num[i];
}
sum/=n;
for(int i=0;i<n;i++)num[i]-=sum;
int l=0,r=0;
for(int i=0;i<n;i++)if(num[i]<0){l=i;break;}
for(int i=0;i<n;i++)