题目描述
G 公司有 n 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等。如何用最少搬运量可以使 n 个仓库的库存数量相同。搬运货物时,只能在相邻的仓库之间搬运。
输入格式
文件的第 1 行中有 1 个正整数 n,表示有 n 个仓库。
第 2 行中有 n 个正整数,表示 n 个仓库的库存量。
输出格式
输出最少搬运量。
输入输出样例
输入 #15 17 9 14 16 4输出 #1
11
说明/提示
1≤n≤1001
思路
代码
#include<bits/stdc++.h> using namespace std; long long n,a[105],sum,s[105]; int main() { cin>>n; for(int i=1;i<=n;i++)cin>>a[i],sum+=a[i]; sum/=n; for(int i=1;i<=n;i++)a[i]-=sum,s[i]=s[i-1]+a[i]; sort(s+1,s+n+1); sum=0; for(int i=1;i<=n;i++)sum+=abs(s[n/2+1]-s[i]); cout<<sum; return 0; }