问题描述
一条笔直公路上分布着n(2<=n<=300000)个村庄,从左往右编号1到n,每个村庄要么需要买酒,要么需要卖酒。
设第i个村庄对葡萄酒的需求为Ai(-1000<=Ai<=1000),其中Ai>0表示该村需要买酒,Ai<0表示该村需要卖酒。所有村庄供需平衡,即所有Ai之和等于0
把k升葡萄酒从一个村庄运到相邻村庄需要k块钱的运费,请你计算最少需要多少运费就可以满足所有村庄对酒的需求。结果保证在64位整数范围以内。
输入格式
第一行,一个整数n,表示村庄的数量
第二行,n个空格间隔的整数,依次表示1到n号村庄对酒的需求
输出格式
一行,一个整数,表示最小的费用
样例输入
样例输入1:
5
5 -4 1 -3 1
样例输入2:
6
-1000 -1000 -1000 1000 1000 1000
样例输出
样例输出1:
9
样例输出2:
9000
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
long long b,ans=0,need=0;
for(int i=1;i<=n;i++)
{
cin>>b;
ans+=fabs(need);
need+=b;
}
cout<<ans;
}