等价转换思维题
题意: 直线上有n(2<=n<=100000)个等距的村庄 每个村庄要么买酒 要么卖酒 设第i个村庄对酒的需求量为ai 绝对值小于一千 其中ai大于0表示买酒 小于0表示卖酒 所有村庄供需平衡
把k个单位的酒从一个村庄运到相邻的村庄需要k个单位的劳动力 计算最少需要多少劳动力可以满足所有村庄的需要求
这种较大数据求和的题目 sum一定要longlong!!!!
#include<bits/stdc++.h> using namespace std; #define N 100001 int a[N]; int main() { int n; while(cin>>n,n) { for(int i=1;i<=n;i++) scanf("%d",&a[i]); long long sum=0; for(int i=1;i<=n-1;i++) { a[i+1]+=a[i]; sum+=abs(a[i]); } printf("%lld ",sum); } return 0; }