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;}