1.题意:有n个居民买酒与卖酒,没移动一个房子距离相当用一个工作量,求最少工作量。
5 5 -4 1 -3 1 6 -1000 -1000 -1000 1000 1000 1000 0
多个样例,每个样例有两行,5代表有5个居民,第二行代表每个居民的需求,整数代表买进,负数代表卖出;
2.思路:一家一家的访问,一家一家的累加即可;
3.优化后代码:
#include<stdio.h>
int main()
{
int n;
int a;
long long sum;
long long ans;
while(scanf("%d",&n)!=EOF)
{
if(n==0)
break;
sum=ans=0;
for(int i=0;i<n;i++)
{
scanf("%d",&a);
sum+=a;
if(sum<0)
ans-=sum;
if(sum>=0)
ans+=sum;
}
printf("%lld\n",ans);
}
return 0;
}