题目的意思就是一条街上有很多葡萄酒店,正数代表要运走,负数代表要运进。总和是0;
然后就是怎么全部运成0,每一个单位的酒运到隔壁要一个单位钱,问钱最少多少。
其实不需要模拟,每家店把多的酒全部运到右边隔壁家,算一下要多少钱,然后右边那家的酒量就变了。如果是负数也直接加绝对值,代表它右边会有酒运过来,但是它右边那家店的酒量还是要加上负数的。一只到最后一家,就得出全部的运费了。。
AC代码:
#include<iostream>
#include<cmath>
using namespace std;
#define ll long long
const int N = 100000 + 5;
int shop[N];
int main () {
int num;
while (cin >> num && num) {
for (int i = 0 ; i < num ;i++) {
cin >> shop[i];
}
ll sum = 0;
for (int i = 0 ; i < num - 1 ;i++) {
sum += abs(shop[i]);
shop[i + 1] += shop[i];
}
cout << sum <<endl;
}
}