Dãy răng cưa

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1300 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Bạn được cho một dãy số nguyên có độ dài \(N\), phần tử thứ \(i\) trong dãy là \(a_i\). Trong một phép thao tác, bạn có thể chọn một phần tử và tăng hoặc giảm nó đi một.

Yêu cầu: Hãy tìm cách thực hiện sử dụng ít phép thao tác nhất để thỏa mãn các điều kiện sau đây, gọi \(S(i)\) là tổng các phần từ từ phần tử thứ nhất đến phần tử thứ \(i\):

  • Với mọi \(i\) \((1 \leq i \leq n)\), \(S(i) \neq 0\).
  • Với mọi \(i\) \((1 \leq i \leq n−1)\), \(S(i) \times S(i+1) < 0\).

Input

  • Dòng đầu tiên chứa số nguyên \(n\) \((2 \leq n \leq 10^5)\) \(-\) số lượng phần tử dãy số nguyên.
  • Dòng thứ hai chứa \(n\) số nguyên \(a_1, a_2, \ldots, a_n\) \((|a_i| \leq 10^9)\) thể hiện các phần tử của dãy số nguyên.

Output

  • In ra một số nguyên duy nhất là số lượng thao tác ít nhất để thỏa mãn điều kiện đề bài.

Example

Test 1

Input
4
1 -2 5 1
Output
6

Test 2

Input
3
1 -2 3
Output
0

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.