原题链接:https://vjudge.net/problem/UVA-11054
分类:贪心法
备注:思维推理
从左往右看,如果该点是正数,则必须从右边相邻点运酒过来,那么右边需求量则要加上当前值;如果该点是负数,那么要把酒运到右边去,右边需求量则会减少,同样是做加法。运来运走都是消耗体力,故每次当前值的绝对值就是给答案的贡献。
#include<bits/stdc++.h>
using namespace std;
const int maxn=100000+5;
typedef long long ll;
int n;
ll a[maxn],ans;
int main(void){
//freopen("in.txt","r",stdin);
while(~scanf("%d",&n)&&n){
ans=0;
for(int i=1;i<=n;i++)scanf("%lld",&a[i]);
for(int i=1;i<=n;i++){
ans+=abs(a[i]); a[i+1]+=a[i];
}
printf("%lld\n",ans);
}
return 0;
}