问题描述
一条笔直公路上分布着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
提示
样例1说明:
从2号村庄将4升酒运往村庄1,花费4
从4号村庄将1升酒运往村庄3,花费1
从4号村庄将1升酒运往村庄1,花费3
从4号村庄将1升酒运往村庄5,花费1
总花费为9
_____________________________________________________________________________
写作不易,点个赞呗!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
_____________________________________________________________________________
#include <bits/stdc++.h>
using namespace std;
long long n,a,b,m,ans,i;
int main(){
scanf("%d",&n);
for(i=1;i<=n;i++){这里有负数输入不能用scanf否则出错
cin>>a;
b+=a;
ans+=abs(b);
}
cout<<ans;
}