以前看这道题目的时候就觉得难,

还做的导致time limited。。

看了某人的方法以后,才知道怎么做,

数学好的人还真有优势。我要加油,加油

思想如下:

从第一户人家开始,不管其是供还是需x,都必须在第一户和第二户之间搬运x单元的酒,

此时合并这两户人家,假设其需或供y单元的酒,

则再与第三户人家比较时候,要搬运y单元的酒,

如此下去,直至第n户人家】

代码如下:

 

#include<stdio.h>
#include<math.h>
int main()
{
 int n;
 __int64 x,rest,sum;

 while(scanf("%d",&n),n)
 {
  rest=0;sum=0;
  while(n--)
  {
   scanf("%I64d",&x);
   rest+=x;
   sum+=abs(rest);
   
  }
  printf("%I64d\n",sum);
 }
 return 0;
}

posted on 2008-11-08 21:24  pandy  阅读(325)  评论(0编辑  收藏  举报