#include #include using namespace std; #define MIN(a,b) (a > b ? b : a) #define MAX(a,b) (a > b ? a : b) typedef long long LL; LL a[100000]; int maxPos(int l, int r) { LL m = 0; int x=a[0]; for(int i = l; i < r; ++i) { if(m < a[i]) { m = a[i]; x = i; } } return x; } int main() { ifstream fin("gergovia.in"); while(1) { int n; fin >> n; if(n == 0) break; LL total = 0; for(int i = 0; i < n; ++i) { fin >> a[i]; total += a[i]; } LL work = 0; while(1) { int p = maxPos(0, n); if(a[p] == 0) break; int r = 0, l = 0; while(1) { if(a[p+r] < 0) { LL mi = MIN(a[p], -a[p+r]); a[p+r] += mi; a[p] -= mi; work += r * mi; break; } if(a[p-l] < 0) { LL mi = MIN(a[p], -a[p-l]); a[p-l] += mi; a[p] -= mi; work += l * mi; break; } if(p - l > 0) l++; else if(r == n) break; if(p + r < n) r++; else if(l == 0) break; } } cout << work << endl; } return 0; }